From 25a0bbee017a71ecc5b6359a1b6ce16e76399e1d Mon Sep 17 00:00:00 2001 From: David Grudl Date: Thu, 12 Nov 2020 00:13:51 +0100 Subject: [PATCH] Parser: fixed parsing {__()} [Closes #226] --- src/Latte/Compiler/Parser.php | 2 +- tests/Latte/Parser.parseMacroTag.phpt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Latte/Compiler/Parser.php b/src/Latte/Compiler/Parser.php index 328d54040b..736b9d37f8 100644 --- a/src/Latte/Compiler/Parser.php +++ b/src/Latte/Compiler/Parser.php @@ -393,7 +393,7 @@ public function parseMacroTag(string $tag): ?array (?P/?) ( (?P\?|[a-z]\w*+(?:[.:]\w+)*+(?!::|\(|\\\\))| ## ?, name, /name, but not function( or class:: or namespace\ - (?P[=_]?) ## expression, =expression, ... + (?P=|_(?!_)|) ## expression, =expression, ... )(?P(?:' . self::RE_STRING . '|[^\'"])*?) (?P(?(?:' . self::RE_STRING . '|(?:\((?P>modArgs)\))|[^\'"/()]|/(?=.))*+))? (?P/?$) diff --git a/tests/Latte/Parser.parseMacroTag.phpt b/tests/Latte/Parser.parseMacroTag.phpt index d87ba4b88b..a879c26540 100644 --- a/tests/Latte/Parser.parseMacroTag.phpt +++ b/tests/Latte/Parser.parseMacroTag.phpt @@ -27,6 +27,7 @@ Assert::same(['=', '$var', '|noescape', false, false], $parser->parseMacroTag('$ Assert::same(['=', '$var', '|noescape', true, false], $parser->parseMacroTag('$var|noescape/')); Assert::same(['=', '$var||false', '', false, false], $parser->parseMacroTag('$var||false')); Assert::same(['_', '"I love Nette"', '|noescape', false, false], $parser->parseMacroTag('_"I love Nette"|noescape')); +Assert::same(['=', '__("I love Nette")', '|noescape', false, false], $parser->parseMacroTag('__("I love Nette")|noescape')); Assert::same(['_', '$var', '', false, false], $parser->parseMacroTag('_$var')); Assert::same(['_', '$var', '', false, false], $parser->parseMacroTag('_ $var')); Assert::same(['_', '', '', false, false], $parser->parseMacroTag('_'));