mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-26 03:48:53 +00:00
[feature/twig] Support our old INCLUDE statements (no quotes)
Better code for handling IF .blah PHPBB3-11598
This commit is contained in:
parent
1da4be04b0
commit
87cc8af265
1 changed files with 23 additions and 13 deletions
|
@ -19,24 +19,34 @@ class phpbb_template_twig_lexer extends Twig_Lexer
|
|||
{
|
||||
protected function lexExpression()
|
||||
{
|
||||
parent::lexExpression();
|
||||
|
||||
// Last element parsed
|
||||
$last_element = end($this->tokens);
|
||||
|
||||
/**
|
||||
* Check for old fashioned INCLUDE statements without enclosed quotes
|
||||
*/
|
||||
if ($last_element->getValue() === 'INCLUDE')
|
||||
{
|
||||
if (preg_match('#^\s*([a-zA-Z0-9_]+\.[a-zA-Z0-9]+)#', substr($this->code, $this->cursor), $match))
|
||||
{
|
||||
$this->pushToken(Twig_Token::STRING_TYPE, stripcslashes($match[1]));
|
||||
$this->moveCursor($match[0]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is some compatibility code to continue supporting expressions such as:
|
||||
* <!-- IF .blah -->
|
||||
*
|
||||
* This does not seem very efficient, but I have not been able to find a better
|
||||
* method which works properly (maybe lexData can do it better, @todo test this)
|
||||
*/
|
||||
$last_element = end($this->tokens);
|
||||
if ($last_element->getValue() === '.')
|
||||
if ($last_element->getValue() === 'IF')
|
||||
{
|
||||
$last_element2 = prev($this->tokens);
|
||||
|
||||
if ($last_element2->getValue() === 'IF')
|
||||
{
|
||||
array_pop($this->tokens);
|
||||
}
|
||||
if (preg_match('#^\s*\.([a-zA-Z0-9\.]+)#', substr($this->code, $this->cursor), $match))
|
||||
{
|
||||
$this->pushToken(Twig_Token::STRING_TYPE, stripcslashes($match[1]));
|
||||
$this->moveCursor($match[0]);
|
||||
}
|
||||
}
|
||||
|
||||
parent::lexExpression();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue