aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/template/twig/lexer.php
diff options
context:
space:
mode:
authorNathaniel Guse <nathaniel.guse@gmail.com>2013-07-19 14:12:28 -0500
committerNathaniel Guse <nathaniel.guse@gmail.com>2013-07-19 14:12:28 -0500
commit375976eb38882f42155f1f7fa2c849add8dbcf08 (patch)
treec6c27f97d7c370352ea44d324b8ebb25c4b25373 /phpBB/phpbb/template/twig/lexer.php
parent29322e85ff31d1a71a07846241dd809972323340 (diff)
downloadforums-375976eb38882f42155f1f7fa2c849add8dbcf08.tar
forums-375976eb38882f42155f1f7fa2c849add8dbcf08.tar.gz
forums-375976eb38882f42155f1f7fa2c849add8dbcf08.tar.bz2
forums-375976eb38882f42155f1f7fa2c849add8dbcf08.tar.xz
forums-375976eb38882f42155f1f7fa2c849add8dbcf08.zip
[ticket/11707] Twig DEFINE not working as expected
PHPBB3-11707
Diffstat (limited to 'phpBB/phpbb/template/twig/lexer.php')
-rw-r--r--phpBB/phpbb/template/twig/lexer.php12
1 files changed, 8 insertions, 4 deletions
diff --git a/phpBB/phpbb/template/twig/lexer.php b/phpBB/phpbb/template/twig/lexer.php
index 46412ad048..1fa4c5b3e6 100644
--- a/phpBB/phpbb/template/twig/lexer.php
+++ b/phpBB/phpbb/template/twig/lexer.php
@@ -126,10 +126,14 @@ class phpbb_template_twig_lexer extends Twig_Lexer
{
$callback = function($matches)
{
- // Remove any quotes that may have been used in different implementations
- // E.g. DEFINE $TEST = 'blah' vs INCLUDE foo
- // Replace {} with start/end to parse variables (' ~ TEST ~ '.html)
- $matches[2] = str_replace(array('"', "'", '{', '}'), array('', '', "' ~ ", " ~ '"), $matches[2]);
+ // Remove matching quotes at the beginning/end if a statement;
+ // E.g. 'asdf'"' -> asdf'"
+ // E.g. "asdf'"" -> asdf'"
+ // E.g. 'asdf'" -> 'asdf'"
+ $matches[2] = preg_replace('#^([\'"])?(.+?)\1$#', '$2', $matches[2]);
+
+ // Replace template variables with start/end to parse variables (' ~ TEST ~ '.html)
+ $matches[2] = preg_replace('#{([a-zA-Z0-9_\.$]+)}#', "'~ \$1 ~'", $matches[2]);
// Surround the matches in single quotes ('' ~ TEST ~ '.html')
return "<!-- {$matches[1]} '{$matches[2]}' -->";