]>
git.immae.eu Git - github/wallabag/wallabag.git/blob - vendor/twig/twig/lib/Twig/TokenParser/Macro.php
82b4fa6dc72e50574764230f3dcb78984326548f
4 * This file is part of Twig.
6 * (c) 2009 Fabien Potencier
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
16 * {% macro input(name, value, type, size) %}
17 * <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
21 class Twig_TokenParser_Macro
extends Twig_TokenParser
24 * Parses a token and returns a node.
26 * @param Twig_Token $token A Twig_Token instance
28 * @return Twig_NodeInterface A Twig_NodeInterface instance
30 public function parse(Twig_Token
$token)
32 $lineno = $token->getLine();
33 $stream = $this->parser
->getStream();
34 $name = $stream->expect(Twig_Token
::NAME_TYPE
)->getValue();
36 $arguments = $this->parser
->getExpressionParser()->parseArguments(true, true);
38 $stream->expect(Twig_Token
::BLOCK_END_TYPE
);
39 $this->parser
->pushLocalScope();
40 $body = $this->parser
->subparse(array($this, 'decideBlockEnd'), true);
41 if ($stream->test(Twig_Token
::NAME_TYPE
)) {
42 $value = $stream->next()->getValue();
44 if ($value != $name) {
45 throw new Twig_Error_Syntax(sprintf("Expected endmacro for macro '$name' (but %s given)", $value), $stream->getCurrent()->getLine(), $stream->getFilename());
48 $this->parser
->popLocalScope();
49 $stream->expect(Twig_Token
::BLOCK_END_TYPE
);
51 $this->parser
->setMacro($name, new Twig_Node_Macro($name, new Twig_Node_Body(array($body)), $arguments, $lineno, $this->getTag()));
54 public function decideBlockEnd(Twig_Token
$token)
56 return $token->test('endmacro');
60 * Gets the tag name associated with this token parser.
62 * @return string The tag name
64 public function getTag()