Code Duplication    Length = 113-113 lines in 2 locations

src/Scaffolder/Compilers/Blade/PageLayoutCompiler.php 1 location

@@ 10-122 (lines=113) @@
7
use Scaffolder\Compilers\Support\FileToCompile;
8
use Scaffolder\Compilers\Support\PathParser;
9
10
class PageLayoutCompiler extends AbstractViewCompiler
11
{
12
    /**
13
     * Compiles the page layout.
14
     *
15
     * @param      $stub
16
     * @param      $modelName
17
     * @param      $modelData
18
     * @param      $scaffolderConfig
19
     * @param      $hash
20
     * @param null $extra
21
     *
22
     * @return string
23
     */
24
    public function compile($stub, $modelName, $modelData, $scaffolderConfig, $hash, $extra = null)
25
    {
26
        $this->stub = $stub;
27
28
        return $this->setPageTitle($scaffolderConfig)
29
            ->setAppName($scaffolderConfig)
30
            ->setLinks($extra['links'], $scaffolderConfig)
31
            ->replaceRoutePrefix($scaffolderConfig->generator->routing->prefix)
32
            ->store($modelName, $scaffolderConfig, $this->stub, new FileToCompile(null, null));
33
    }
34
35
    /**
36
     * Store the compiled stub.
37
     *
38
     * @param               $modelName
39
     * @param               $scaffolderConfig
40
     * @param               $compiled
41
     * @param FileToCompile $fileToCompile
42
     *
43
     * @return string
44
     */
45
    protected function store($modelName, $scaffolderConfig, $compiled, FileToCompile $fileToCompile)
46
    {
47
        $path = PathParser::parse($scaffolderConfig->generator->paths->views) . 'layouts/page.blade.php';
48
49
        File::put($path, $compiled);
50
51
        return $path;
52
    }
53
54
    /**
55
     * Replace the page title.
56
     *
57
     * @param $scaffolderConfig
58
     *
59
     * @return $this
60
     */
61
    private function setPageTitle($scaffolderConfig)
62
    {
63
        $this->stub = str_replace('{{page_title}}', $scaffolderConfig->userInterface->pageTitle, $this->stub);
64
65
        return $this;
66
    }
67
68
    /**
69
     * Replace the app name.
70
     *
71
     * @param $scaffolderConfig
72
     *
73
     * @return $this
74
     */
75
    private function setAppName($scaffolderConfig)
76
    {
77
        $this->stub = str_replace('{{app_name}}', $scaffolderConfig->name, $this->stub);
78
79
        return $this;
80
    }
81
82
    /**
83
     * Add links to the nav.
84
     *
85
     * @param $links
86
     * @param $scaffolderConfig
87
     *
88
     * @return $this
89
     */
90
    private function setLinks($links, $scaffolderConfig)
91
    {
92
        $navLinks = '';
93
94
        foreach ($links as $link)
95
        {
96
            $navLinks .= sprintf("
97
            <li>
98
                <a href='/%s' class='waves-effect'>
99
                    %ss
100
                </a>
101
            </li>", $scaffolderConfig->generator->routing->prefix . '/' . strtolower($link), $link);
102
        }
103
104
        $this->stub = str_replace('{{links}}', $navLinks, $this->stub);
105
106
        return $this;
107
    }
108
109
    /**
110
     * Replace the route prefix.
111
     *
112
     * @param $prefix
113
     *
114
     * @return $this
115
     */
116
    private function replaceRoutePrefix($prefix)
117
    {
118
        $this->stub = str_replace('{{route_prefix}}', $prefix, $this->stub);
119
120
        return $this;
121
    }
122
}

src/Scaffolder/Compilers/View/PageLayoutCompiler.php 1 location

@@ 10-122 (lines=113) @@
7
use Scaffolder\Compilers\Support\FileToCompile;
8
use Scaffolder\Compilers\Support\PathParser;
9
10
class PageLayoutCompiler extends AbstractViewCompiler
11
{
12
    /**
13
     * Compiles the page layout.
14
     *
15
     * @param      $stub
16
     * @param      $modelName
17
     * @param      $modelData
18
     * @param      $scaffolderConfig
19
     * @param      $hash
20
     * @param null $extra
21
     *
22
     * @return string
23
     */
24
    public function compile($stub, $modelName, $modelData, $scaffolderConfig, $hash, $extra = null)
25
    {
26
        $this->stub = $stub;
27
28
        return $this->setPageTitle($scaffolderConfig)
29
            ->setAppName($scaffolderConfig)
30
            ->setLinks($extra['links'], $scaffolderConfig)
31
            ->replaceRoutePrefix($scaffolderConfig->routing->prefix)
32
            ->store($modelName, $scaffolderConfig, $this->stub, new FileToCompile(null, null));
33
    }
34
35
    /**
36
     * Store the compiled stub.
37
     *
38
     * @param               $modelName
39
     * @param               $scaffolderConfig
40
     * @param               $compiled
41
     * @param FileToCompile $fileToCompile
42
     *
43
     * @return string
44
     */
45
    protected function store($modelName, $scaffolderConfig, $compiled, FileToCompile $fileToCompile)
46
    {
47
        $path = PathParser::parse($scaffolderConfig->paths->views) . 'layouts/page.blade.php';
48
49
        File::put($path, $compiled);
50
51
        return $path;
52
    }
53
54
    /**
55
     * Replace the page title.
56
     *
57
     * @param $scaffolderConfig
58
     *
59
     * @return $this
60
     */
61
    private function setPageTitle($scaffolderConfig)
62
    {
63
        $this->stub = str_replace('{{page_title}}', $scaffolderConfig->userInterface->pageTitle, $this->stub);
64
65
        return $this;
66
    }
67
68
    /**
69
     * Replace the app name.
70
     *
71
     * @param $scaffolderConfig
72
     *
73
     * @return $this
74
     */
75
    private function setAppName($scaffolderConfig)
76
    {
77
        $this->stub = str_replace('{{app_name}}', $scaffolderConfig->name, $this->stub);
78
79
        return $this;
80
    }
81
82
    /**
83
     * Add links to the nav.
84
     *
85
     * @param $links
86
     * @param $scaffolderConfig
87
     *
88
     * @return $this
89
     */
90
    private function setLinks($links, $scaffolderConfig)
91
    {
92
        $navLinks = '';
93
94
        foreach ($links as $link)
95
        {
96
            $navLinks .= sprintf("
97
            <li>
98
                <a href='/%s' class='waves-effect'>
99
                    %ss
100
                </a>
101
            </li>", $scaffolderConfig->routing->prefix . '/' . strtolower($link), $link);
102
        }
103
104
        $this->stub = str_replace('{{links}}', $navLinks, $this->stub);
105
106
        return $this;
107
    }
108
109
    /**
110
     * Replace the route prefix.
111
     *
112
     * @param $prefix
113
     *
114
     * @return $this
115
     */
116
    private function replaceRoutePrefix($prefix)
117
    {
118
        $this->stub = str_replace('{{route_prefix}}', $prefix, $this->stub);
119
120
        return $this;
121
    }
122
}