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()); }
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; }