phpBB

Code Changes

File: phpbb/template/twig/tokenparser/defineparser.php

  Unmodified   Added   Modified   Removed
Line 14Line 14

namespace phpbb\template\twig\tokenparser;



namespace phpbb\template\twig\tokenparser;


class defineparser extends \Twig_TokenParser

class defineparser extends \Twig\TokenParser\AbstractTokenParser

{
/**
* Parses a token and returns a node.
*

{
/**
* Parses a token and returns a node.
*

	* @param \Twig_Token $token A Twig_Token instance

	* @param \Twig\Token $token A Twig\Token instance

	*

	*

	* @return \Twig_Node A Twig_Node instance
* @throws \Twig_Error_Syntax

	* @return \Twig\Node\Node A Twig\Node instance
* @throws \Twig\Error\SyntaxError

	* @throws \phpbb\template\twig\node\definenode
*/

	* @throws \phpbb\template\twig\node\definenode
*/

	public function parse(\Twig_Token $token)

	public function parse(\Twig\Token $token)

	{
$lineno = $token->getLine();
$stream = $this->parser->getStream();
$name = $this->parser->getExpressionParser()->parseExpression();

$capture = false;

	{
$lineno = $token->getLine();
$stream = $this->parser->getStream();
$name = $this->parser->getExpressionParser()->parseExpression();

$capture = false;

		if ($stream->test(\Twig_Token::OPERATOR_TYPE, '='))

		if ($stream->test(\Twig\Token::OPERATOR_TYPE, '='))

		{
$stream->next();
$value = $this->parser->getExpressionParser()->parseExpression();


		{
$stream->next();
$value = $this->parser->getExpressionParser()->parseExpression();


			if ($value instanceof \Twig_Node_Expression_Name)

			if ($value instanceof \Twig\Node\Expression\NameExpression)

			{
// This would happen if someone improperly formed their DEFINE syntax
// e.g. <!-- DEFINE $VAR = foo -->

			{
// This would happen if someone improperly formed their DEFINE syntax
// e.g. <!-- DEFINE $VAR = foo -->

				throw new \Twig_Error_Syntax('Invalid DEFINE', $token->getLine(), $this->parser->getStream()->getSourceContext()->getPath());

				throw new \Twig\Error\SyntaxError('Invalid DEFINE', $token->getLine(), $this->parser->getStream()->getSourceContext()->getPath());

			}


			}


			$stream->expect(\Twig_Token::BLOCK_END_TYPE);

			$stream->expect(\Twig\Token::BLOCK_END_TYPE);

		}
else
{
$capture = true;


		}
else
{
$capture = true;


			$stream->expect(\Twig_Token::BLOCK_END_TYPE);

			$stream->expect(\Twig\Token::BLOCK_END_TYPE);


$value = $this->parser->subparse(array($this, 'decideBlockEnd'), true);


$value = $this->parser->subparse(array($this, 'decideBlockEnd'), true);

			$stream->expect(\Twig_Token::BLOCK_END_TYPE);

			$stream->expect(\Twig\Token::BLOCK_END_TYPE);

		}

return new \phpbb\template\twig\node\definenode($capture, $name, $value, $lineno, $this->getTag());
}


		}

return new \phpbb\template\twig\node\definenode($capture, $name, $value, $lineno, $this->getTag());
}


	public function decideBlockEnd(\Twig_Token $token)

	public function decideBlockEnd(\Twig\Token $token)

	{
return $token->test('ENDDEFINE');
}

	{
return $token->test('ENDDEFINE');
}