public function parseTestExpression(Twig_Parser $parser, $node)
 {
     $stream = $parser->getStream();
     $name = $stream->expect(Twig_Token::NAME_TYPE);
     $arguments = null;
     if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) {
         $arguments = $parser->getExpressionParser()->parseArguments();
     }
     return new Twig_Node_Expression_Test($node, $name->getValue(), $arguments, $parser->getCurrentToken()->getLine());
 }
Example #2
0
 public function parseTestExpression(Twig_Parser $parser, $node)
 {
     $stream = $parser->getStream();
     $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
     $arguments = null;
     if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) {
         $arguments = $parser->getExpressionParser()->parseArguments();
     }
     $class = $this->getTestNodeClass($parser->getEnvironment(), $name);
     return new $class($node, $name, $arguments, $parser->getCurrentToken()->getLine());
 }
 public function parseOptionsTag(\Twig_Parser $parser, $hasContent = true, $method = 'decideBlockEnd')
 {
     $options = array();
     if (!$parser->getStream()->test(\Twig_Token::BLOCK_END_TYPE)) {
         do {
             $nameExpression = $this->parser->getExpressionParser()->parseExpression();
             $name = $nameExpression->getAttribute('name');
             $options['names'][$name] = $nameExpression;
             $parser->getStream()->expect(\Twig_Token::OPERATOR_TYPE, '=');
             $options['values'][$name] = $parser->getExpressionParser()->parseExpression();
         } while (!$parser->getStream()->test(\Twig_Token::BLOCK_END_TYPE));
     }
     if ($hasContent) {
         $parser->getStream()->expect(\Twig_Token::BLOCK_END_TYPE);
         $options['content'] = $parser->subparse(array($this, $method), true);
     }
     $parser->getStream()->expect(\Twig_Token::BLOCK_END_TYPE);
     return $options;
 }