1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-09 02:06:32 +02:00

[feature/twig] Fixing DEFINE statements

PHPBB3-11598
This commit is contained in:
Nathaniel Guse
2013-06-29 11:07:10 -05:00
parent abb7901edb
commit 64963b5962
5 changed files with 196 additions and 33 deletions

View File

@@ -7,8 +7,39 @@
*
*/
class phpbb_template_twig_tokenparser_define extends Twig_TokenParser_Set
class phpbb_template_twig_tokenparser_define extends Twig_TokenParser
{
/**
* Parses a token and returns a node.
*
* @param Twig_Token $token A Twig_Token instance
*
* @return Twig_NodeInterface A Twig_NodeInterface instance
*/
public function parse(Twig_Token $token)
{
$lineno = $token->getLine();
$stream = $this->parser->getStream();
$name = $this->parser->getExpressionParser()->parseExpression();
$capture = false;
if ($stream->test(Twig_Token::OPERATOR_TYPE, '=')) {
$stream->next();
$value = $this->parser->getExpressionParser()->parseExpression();
$stream->expect(Twig_Token::BLOCK_END_TYPE);
} else {
$capture = true;
$stream->expect(Twig_Token::BLOCK_END_TYPE);
$value = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
$stream->expect(Twig_Token::BLOCK_END_TYPE);
}
return new phpbb_template_twig_node_define($capture, $name, $value, $lineno, $this->getTag());
}
public function decideBlockEnd(Twig_Token $token)
{
return $token->test('ENDDEFINE');