getLine(); [$object, $layout, $context] = $this->parseArguments($token); return new TwigNodeRender($object, $layout, $context, $lineno, $this->getTag()); } /** * @param Token $token * @return array */ protected function parseArguments(Token $token) { $stream = $this->parser->getStream(); $object = $this->parser->getExpressionParser()->parseExpression(); $layout = null; if ($stream->nextIf(Token::NAME_TYPE, 'layout')) { $stream->expect(Token::PUNCTUATION_TYPE, ':'); $layout = $this->parser->getExpressionParser()->parseExpression(); } $context = null; if ($stream->nextIf(Token::NAME_TYPE, 'with')) { $context = $this->parser->getExpressionParser()->parseExpression(); } $stream->expect(Token::BLOCK_END_TYPE); return [$object, $layout, $context]; } /** * Gets the tag name associated with this token parser. * * @return string The tag name */ public function getTag() { return 'render'; } }