]>
git.immae.eu Git - github/wallabag/wallabag.git/blob - vendor/twig/twig/lib/Twig/TokenParser/Embed.php
4 * This file is part of Twig.
6 * (c) 2012 Fabien Potencier
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
15 class Twig_TokenParser_Embed
extends Twig_TokenParser_Include
18 * Parses a token and returns a node.
20 * @param Twig_Token $token A Twig_Token instance
22 * @return Twig_NodeInterface A Twig_NodeInterface instance
24 public function parse(Twig_Token
$token)
26 $stream = $this->parser
->getStream();
28 $parent = $this->parser
->getExpressionParser()->parseExpression();
30 list($variables, $only, $ignoreMissing) = $this->parseArguments();
32 // inject a fake parent to make the parent() function work
33 $stream->injectTokens(array(
34 new Twig_Token(Twig_Token
::BLOCK_START_TYPE
, '', $token->getLine()),
35 new Twig_Token(Twig_Token
::NAME_TYPE
, 'extends', $token->getLine()),
36 new Twig_Token(Twig_Token
::STRING_TYPE
, '__parent__', $token->getLine()),
37 new Twig_Token(Twig_Token
::BLOCK_END_TYPE
, '', $token->getLine()),
40 $module = $this->parser
->parse($stream, array($this, 'decideBlockEnd'), true);
42 // override the parent with the correct one
43 $module->setNode('parent', $parent);
45 $this->parser
->embedTemplate($module);
47 $stream->expect(Twig_Token
::BLOCK_END_TYPE
);
49 return new Twig_Node_Embed($module->getAttribute('filename'), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag());
52 public function decideBlockEnd(Twig_Token
$token)
54 return $token->test('endembed');
58 * Gets the tag name associated with this token parser.
60 * @return string The tag name
62 public function getTag()