public function Twig_TokenParser_Embed::parse in Translation template extractor 7.3
Same name and namespace in other branches
- 6.3 vendor/Twig/TokenParser/Embed.php \Twig_TokenParser_Embed::parse()
Parses a token and returns a node.
Parameters
Twig_Token $token A Twig_Token instance:
Return value
Twig_NodeInterface A Twig_NodeInterface instance
Throws
Overrides Twig_TokenParser_Include::parse
File
- vendor/
Twig/ TokenParser/ Embed.php, line 17
Class
- Twig_TokenParser_Embed
- Embeds a template.
Code
public function parse(Twig_Token $token) {
$stream = $this->parser
->getStream();
$parent = $this->parser
->getExpressionParser()
->parseExpression();
list($variables, $only, $ignoreMissing) = $this
->parseArguments();
// inject a fake parent to make the parent() function work
$stream
->injectTokens(array(
new Twig_Token(Twig_Token::BLOCK_START_TYPE, '', $token
->getLine()),
new Twig_Token(Twig_Token::NAME_TYPE, 'extends', $token
->getLine()),
new Twig_Token(Twig_Token::STRING_TYPE, '__parent__', $token
->getLine()),
new Twig_Token(Twig_Token::BLOCK_END_TYPE, '', $token
->getLine()),
));
$module = $this->parser
->parse($stream, array(
$this,
'decideBlockEnd',
), true);
// override the parent with the correct one
$module
->setNode('parent', $parent);
$this->parser
->embedTemplate($module);
$stream
->expect(Twig_Token::BLOCK_END_TYPE);
return new Twig_Node_Embed($module
->getAttribute('filename'), $module
->getAttribute('index'), $variables, $only, $ignoreMissing, $token
->getLine(), $this
->getTag());
}