Skip to content

Commit 5f656ba

Browse files
committed
Reimplement the cache tag in an adhoc way
1 parent 9feae35 commit 5f656ba

1 file changed

Lines changed: 18 additions & 16 deletions

File tree

TokenParser/CacheTokenParser.php

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,26 @@ public function parse(Token $token): Node
3131
$tags = null;
3232
while ($stream->test(Token::NAME_TYPE)) {
3333
$k = $stream->getCurrent()->getValue();
34+
if (!in_array($k, ['ttl', 'tags'])) {
35+
throw new SyntaxError(\sprintf('Unknown "%s" configuration.', $k), $stream->getCurrent()->getLine(), $stream->getSourceContext());
36+
}
37+
3438
$stream->next();
35-
$args = $expressionParser->parseNamedArguments();
39+
$stream->expect(Token::PUNCTUATION_TYPE, '(');
40+
$line = $stream->getCurrent()->getLine();
41+
if ($stream->test(Token::PUNCTUATION_TYPE, ')')) {
42+
throw new SyntaxError(\sprintf('The "%s" modifier takes exactly one argument (0 given).', $k), $line, $stream->getSourceContext());
43+
}
44+
$arg = $expressionParser->parseExpression();
45+
if ($stream->test(Token::PUNCTUATION_TYPE, ',')) {
46+
throw new SyntaxError(\sprintf('The "%s" modifier takes exactly one argument (2 given).', $k), $line, $stream->getSourceContext());
47+
}
48+
$stream->expect(Token::PUNCTUATION_TYPE, ')');
3649

37-
switch ($k) {
38-
case 'ttl':
39-
if (1 !== \count($args)) {
40-
throw new SyntaxError(\sprintf('The "ttl" modifier takes exactly one argument (%d given).', \count($args)), $stream->getCurrent()->getLine(), $stream->getSourceContext());
41-
}
42-
$ttl = $args->getNode('0');
43-
break;
44-
case 'tags':
45-
if (1 !== \count($args)) {
46-
throw new SyntaxError(\sprintf('The "tags" modifier takes exactly one argument (%d given).', \count($args)), $stream->getCurrent()->getLine(), $stream->getSourceContext());
47-
}
48-
$tags = $args->getNode('0');
49-
break;
50-
default:
51-
throw new SyntaxError(\sprintf('Unknown "%s" configuration.', $k), $stream->getCurrent()->getLine(), $stream->getSourceContext());
50+
if ('ttl' === $k) {
51+
$ttl = $arg;
52+
} elseif ('tags' === $k) {
53+
$tags = $arg;
5254
}
5355
}
5456

0 commit comments

Comments
 (0)