1 | <?php |
||
13 | final class Code |
||
14 | { |
||
15 | const INDENT = ' '; |
||
16 | |||
17 | /** |
||
18 | * @var string |
||
19 | */ |
||
20 | private $shortName; |
||
21 | |||
22 | /** |
||
23 | * @var array |
||
24 | */ |
||
25 | private $config = []; |
||
26 | |||
27 | /** |
||
28 | * @var array |
||
29 | */ |
||
30 | private $scriptFiles = []; |
||
31 | |||
32 | /** |
||
33 | * @var array |
||
34 | */ |
||
35 | private $htmlFragments = []; |
||
36 | |||
37 | 16 | private function __construct() |
|
40 | |||
41 | 16 | public static function create(string $shortName) : Code |
|
49 | |||
50 | 4 | public function mergeConfig(array $config) : Code |
|
56 | |||
57 | 1 | public function getConfig() : array |
|
61 | |||
62 | 6 | public function addScriptFile(string $fileName) : Code |
|
63 | { |
||
64 | 6 | $this->doAddScriptFile($fileName, false); |
|
65 | |||
66 | 6 | return $this; |
|
67 | } |
||
68 | |||
69 | 6 | public function addLazyLoadedScriptFile(string $fileName) : Code |
|
70 | { |
||
71 | 6 | $this->doAddScriptFile($fileName, true); |
|
72 | |||
73 | 6 | return $this; |
|
74 | } |
||
75 | |||
76 | 11 | private function doAddScriptFile(string $fileName, bool $lazyLoad) |
|
77 | { |
||
78 | 11 | if (!isset($this->scriptFiles[$fileName])) { |
|
79 | 11 | $this->scriptFiles[$fileName] = [ |
|
80 | 11 | 'fileName' => $fileName, |
|
81 | 11 | 'lazyLoad' => $lazyLoad, |
|
82 | ]; |
||
83 | } |
||
84 | 11 | } |
|
85 | |||
86 | 4 | public function hasScriptFile(string $fileName) : bool |
|
90 | |||
91 | 1 | public function __toString() : string |
|
95 | |||
96 | 7 | public function toHtml() : string |
|
105 | |||
106 | 7 | private function buildConfigVariablesHtml() |
|
130 | |||
131 | 7 | private function buildJsFilesHtml() |
|
144 | |||
145 | 4 | private function renderJsFile(string $fileName) : string |
|
149 | |||
150 | 2 | private function renderLazyLoadedJsFile(string $fileName) : string |
|
163 | |||
164 | 6 | private function getJsFileUrl(string $fileName) |
|
168 | } |