diff options
Diffstat (limited to 'inc/lib/Twig/TokenParser/With.php')
| -rw-r--r-- | inc/lib/Twig/TokenParser/With.php | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/inc/lib/Twig/TokenParser/With.php b/inc/lib/Twig/TokenParser/With.php new file mode 100644 index 00000000..7a692597 --- /dev/null +++ b/inc/lib/Twig/TokenParser/With.php @@ -0,0 +1,52 @@ +<?php + +/* + * This file is part of Twig. + * + * (c) Fabien Potencier + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Creates a nested scope. + * + * @author Fabien Potencier <fabien@symfony.com> + * + * @final + */ +class Twig_TokenParser_With extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $stream = $this->parser->getStream(); + + $variables = null; + $only = false; + if (!$stream->test(Twig_Token::BLOCK_END_TYPE)) { + $variables = $this->parser->getExpressionParser()->parseExpression(); + $only = $stream->nextIf(Twig_Token::NAME_TYPE, 'only'); + } + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + $body = $this->parser->subparse(array($this, 'decideWithEnd'), true); + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + return new Twig_Node_With($body, $variables, $only, $token->getLine(), $this->getTag()); + } + + public function decideWithEnd(Twig_Token $token) + { + return $token->test('endwith'); + } + + public function getTag() + { + return 'with'; + } +} + +class_alias('Twig_TokenParser_With', 'Twig\TokenParser\WithTokenParser', false); |
