MAPG-180 declare CSS and JS files

This commit is contained in:
bence committed 2020-06-27 02:25:54 +02:00
1 parent 5e645a1313
commit 18bf9aaade
9 files changed
+93 -59

No files matched your search

+33 -2
View File
@@ -11,11 +11,12 @@ class Parser
public function parse(): ParsedFragment
{
$sectionOpen = null;
$extraOpen = false;
$extends = null;
$js = [];
$css = [];
$sections = [];
$extra = ['', ''];
@@ -28,6 +29,18 @@ class Parser
while (($line = fgets($fileHandle)) !== false) {
++$lineNumber;
if (($cssMatched = $this->matchCss($line)) !== null) {
$css[] = $cssMatched;
continue;
}
if (($jsMatched = $this->matchJs($line)) !== null) {
$js[] = $jsMatched;
continue;
}
if (($extendsMatched = $this->matchExtends($line)) !== null) {
if ($extends !== null) {
throw new \Exception('Error in file ' . $this->file . ' in line ' . $lineNumber . ' - There is already an \'@extends\' declared.');
@@ -90,7 +103,25 @@ class Parser
fclose($fileHandle);
return new ParsedFragment($extends, $sections, $extra);
return new ParsedFragment($extends, $css, $js, $sections, $extra);
}
private function matchCss(string $line): ?string
{
if (preg_match('/^\s*@css\((.*)\)\s*$/', $line, $matches)) {
return $matches[1];
}
return null;
}
private function matchJs(string $line): ?string
{
if (preg_match('/^\s*@js\((.*)\)\s*$/', $line, $matches)) {
return $matches[1];
}
return null;
}
private function matchExtends(string $line): ?string