@@ -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