Code Duplication    Length = 111-111 lines in 2 locations

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

@@ 12-122 (lines=111) @@
9
use Scaffolder\Compilers\Support\PathParser;
10
use Scaffolder\Support\Directory;
11
12
class CreateViewCompiler extends AbstractViewCompiler
13
{
14
	use InputTypeResolverTrait;
15
16
	/**
17
	 * Compiles the create view.
18
	 *
19
	 * @param      $stub
20
	 * @param      $modelName
21
	 * @param      $modelData
22
	 * @param      $scaffolderConfig
23
	 * @param      $hash
24
	 * @param null $extra
25
	 *
26
	 * @return string
27
	 */
28
	public function compile($stub, $modelName, $modelData, $scaffolderConfig, $hash, $extra = null)
29
	{
30
		if (File::exists(base_path('scaffolder-config/cache/view_create_' . $hash . self::CACHE_EXT)))
31
		{
32
			return $this->store($modelName, $scaffolderConfig, '', new FileToCompile(true, $hash));
33
		}
34
		else
35
		{
36
			$this->stub = $stub;
37
38
			return $this->replaceClassName($modelName)
39
				->replaceBreadcrumb($modelName)
40
				->addFields($modelData)
41
				->replaceRoutePrefix($scaffolderConfig->generator->routing->prefix)
42
				->store($modelName, $scaffolderConfig, $this->stub, new FileToCompile(false, $hash));
43
		}
44
	}
45
46
	/**
47
	 * Store the compiled stub.
48
	 *
49
	 * @param               $modelName
50
	 * @param               $scaffolderConfig
51
	 * @param               $compiled
52
	 * @param FileToCompile $fileToCompile
53
	 *
54
	 * @return string
55
	 */
56
	protected function store($modelName, $scaffolderConfig, $compiled, FileToCompile $fileToCompile)
57
	{
58
		$folder = PathParser::parse($scaffolderConfig->generator->paths->views) . strtolower($modelName) ;
59
		
60
		// create folder directory
61
		Directory::createIfNotExists($folder, 0755, true);
62
63
		$path = $folder  . '/create.blade.php';
64
65
		// Store in cache
66
		if ($fileToCompile->cached)
67
		{
68
			File::copy(base_path('scaffolder-config/cache/view_create_' . $fileToCompile->hash . self::CACHE_EXT), $path);
69
		}
70
		else
71
		{
72
			File::put(base_path('scaffolder-config/cache/view_create_' . $fileToCompile->hash . self::CACHE_EXT), $compiled);
73
			File::copy(base_path('scaffolder-config/cache/view_create_' . $fileToCompile->hash . self::CACHE_EXT), $path);
74
		}
75
76
		return $path;
77
	}
78
79
	/**
80
	 * Add fields to the create view.
81
	 *
82
	 * @param $modelData
83
	 *
84
	 * @return $this
85
	 */
86
	private function addFields($modelData)
87
	{
88
		$fields = '';
89
		$firstIteration = true;
90
91
		foreach ($modelData->fields as $field)
92
		{
93
			if ($firstIteration)
94
			{
95
				$fields .= sprintf(self::getInputFor($field) . PHP_EOL, $field->name);
96
				$firstIteration = false;
97
			}
98
			else
99
			{
100
				$fields .= sprintf("\t" . self::getInputFor($field) . PHP_EOL, $field->name);
101
			}
102
		}
103
104
		$this->stub = str_replace('{{fields}}', $fields, $this->stub);
105
106
		return $this;
107
	}
108
109
	/**
110
	 * Replace the 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/CreateViewCompiler.php 1 location

@@ 12-122 (lines=111) @@
9
use Scaffolder\Compilers\Support\PathParser;
10
use Scaffolder\Support\Directory;
11
12
class CreateViewCompiler extends AbstractViewCompiler
13
{
14
	use InputTypeResolverTrait;
15
16
	/**
17
	 * Compiles the create view.
18
	 *
19
	 * @param      $stub
20
	 * @param      $modelName
21
	 * @param      $modelData
22
	 * @param      $scaffolderConfig
23
	 * @param      $hash
24
	 * @param null $extra
25
	 *
26
	 * @return string
27
	 */
28
	public function compile($stub, $modelName, $modelData, $scaffolderConfig, $hash, $extra = null)
29
	{
30
		if (File::exists(base_path('scaffolder-config/cache/view_create_' . $hash . self::CACHE_EXT)))
31
		{
32
			return $this->store($modelName, $scaffolderConfig, '', new FileToCompile(true, $hash));
33
		}
34
		else
35
		{
36
			$this->stub = $stub;
37
38
			return $this->replaceClassName($modelName)
39
				->replaceBreadcrumb($modelName)
40
				->addFields($modelData)
41
				->replaceRoutePrefix($scaffolderConfig->routing->prefix)
42
				->store($modelName, $scaffolderConfig, $this->stub, new FileToCompile(false, $hash));
43
		}
44
	}
45
46
	/**
47
	 * Store the compiled stub.
48
	 *
49
	 * @param               $modelName
50
	 * @param               $scaffolderConfig
51
	 * @param               $compiled
52
	 * @param FileToCompile $fileToCompile
53
	 *
54
	 * @return string
55
	 */
56
	protected function store($modelName, $scaffolderConfig, $compiled, FileToCompile $fileToCompile)
57
	{
58
		$folder = PathParser::parse($scaffolderConfig->paths->views) . strtolower($modelName) ;
59
		
60
		// create folder directory
61
		Directory::createIfNotExists($folder, 0755, true);
62
63
		$path = $folder  . '/create.blade.php';
64
65
		// Store in cache
66
		if ($fileToCompile->cached)
67
		{
68
			File::copy(base_path('scaffolder-config/cache/view_create_' . $fileToCompile->hash . self::CACHE_EXT), $path);
69
		}
70
		else
71
		{
72
			File::put(base_path('scaffolder-config/cache/view_create_' . $fileToCompile->hash . self::CACHE_EXT), $compiled);
73
			File::copy(base_path('scaffolder-config/cache/view_create_' . $fileToCompile->hash . self::CACHE_EXT), $path);
74
		}
75
76
		return $path;
77
	}
78
79
	/**
80
	 * Add fields to the create view.
81
	 *
82
	 * @param $modelData
83
	 *
84
	 * @return $this
85
	 */
86
	private function addFields($modelData)
87
	{
88
		$fields = '';
89
		$firstIteration = true;
90
91
		foreach ($modelData->fields as $field)
92
		{
93
			if ($firstIteration)
94
			{
95
				$fields .= sprintf(self::getInputFor($field) . PHP_EOL, $field->name);
96
				$firstIteration = false;
97
			}
98
			else
99
			{
100
				$fields .= sprintf("\t" . self::getInputFor($field) . PHP_EOL, $field->name);
101
			}
102
		}
103
104
		$this->stub = str_replace('{{fields}}', $fields, $this->stub);
105
106
		return $this;
107
	}
108
109
	/**
110
	 * Replace the 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
}