Fixed #10967: Using a round bracket (parenthesis) in a macro. Unbalanced parentheses can now be escaped in macro calls using the backslash character.
This commit is contained in:
parent
f40992f217
commit
a48b16dbfc
5 changed files with 55 additions and 2 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
/*.kpf
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
- fixed #10876: EMS Schedule displaying wrong dates for ticket events
|
- fixed #10876: EMS Schedule displaying wrong dates for ticket events
|
||||||
- fixed #10915: StoryManager: Carousel clips content
|
- fixed #10915: StoryManager: Carousel clips content
|
||||||
- fixed #10907: profiles viewable by everybody
|
- fixed #10907: profiles viewable by everybody
|
||||||
|
- fixed #10967: Using a round bracket (parenthesis) in a macro
|
||||||
- added custom box size to USPS driver, priority service
|
- added custom box size to USPS driver, priority service
|
||||||
- fixed #10919: is visitor or is not visitor??
|
- fixed #10919: is visitor or is not visitor??
|
||||||
- fixed #10920: addUser or addGroup?
|
- fixed #10920: addUser or addGroup?
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,9 @@ my $parenthesis;
|
||||||
$parenthesis = qr{
|
$parenthesis = qr{
|
||||||
\( # Start with '(',
|
\( # Start with '(',
|
||||||
(?: # Followed by
|
(?: # Followed by
|
||||||
(?>[^()]+) # Non-parenthesis
|
(?>\\[()]) # Escaped parenthesis
|
||||||
|
| # or
|
||||||
|
(?>[^()]) # Non-parenthesis
|
||||||
| # or
|
| # or
|
||||||
(??{ $parenthesis }) # a balanced parenthesis block
|
(??{ $parenthesis }) # a balanced parenthesis block
|
||||||
)* # zero or more times
|
)* # zero or more times
|
||||||
|
|
|
||||||
35
t/Macro.t
35
t/Macro.t
|
|
@ -44,7 +44,7 @@ foreach my $macro (qw/
|
||||||
}
|
}
|
||||||
$session->config->addToHash('macros', "Ex'tras", "Extras");
|
$session->config->addToHash('macros', "Ex'tras", "Extras");
|
||||||
|
|
||||||
plan tests => 43;
|
plan tests => 47;
|
||||||
|
|
||||||
my $macroText = "CompanyName: ^c;";
|
my $macroText = "CompanyName: ^c;";
|
||||||
my $companyName = $session->setting->get('companyName');
|
my $companyName = $session->setting->get('companyName');
|
||||||
|
|
@ -121,6 +121,38 @@ is(
|
||||||
"Extras macro with parens but no args",
|
"Extras macro with parens but no args",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
my $macroText = q{Extras("(test"): ^Extras("\(test");};
|
||||||
|
WebGUI::Macro::process($session, \$macroText);
|
||||||
|
is(
|
||||||
|
$macroText,
|
||||||
|
q{Extras("(test"): /extras/(test},
|
||||||
|
"Extras macro with escaped unbalanced opening parenthesis."
|
||||||
|
);
|
||||||
|
|
||||||
|
my $macroText = q{Extras("(test"): ^Extras("prefix \(test");};
|
||||||
|
WebGUI::Macro::process($session, \$macroText);
|
||||||
|
is(
|
||||||
|
$macroText,
|
||||||
|
q{Extras("(test"): /extras/prefix (test},
|
||||||
|
"Extras macro with escaped unbalanced opening parenthesis in the middle."
|
||||||
|
);
|
||||||
|
|
||||||
|
my $macroText = q{Extras("test)"): ^Extras("test\)");};
|
||||||
|
WebGUI::Macro::process($session, \$macroText);
|
||||||
|
is(
|
||||||
|
$macroText,
|
||||||
|
q{Extras("test)"): /extras/test)},
|
||||||
|
"Extras macro with escaped unbalanced closing parenthesis."
|
||||||
|
);
|
||||||
|
|
||||||
|
my $macroText = q{Extras("test)"): ^Extras("test\) suffix");};
|
||||||
|
WebGUI::Macro::process($session, \$macroText);
|
||||||
|
is(
|
||||||
|
$macroText,
|
||||||
|
q{Extras("test)"): /extras/test) suffix},
|
||||||
|
"Extras macro with escaped unbalanced closing parenthesis in the middle."
|
||||||
|
);
|
||||||
|
|
||||||
my $macroText = <<'EOF'
|
my $macroText = <<'EOF'
|
||||||
''=~( '(?{' .('`' |'%') .('[' ^'-')
|
''=~( '(?{' .('`' |'%') .('[' ^'-')
|
||||||
.('`' |'!') .('`' |',') .'"'. '\\$'
|
.('`' |'!') .('`' |',') .'"'. '\\$'
|
||||||
|
|
@ -288,5 +320,6 @@ is(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
END {
|
END {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,22 @@ my @testSets = (
|
||||||
input => q!!,
|
input => q!!,
|
||||||
output => q!''!,
|
output => q!''!,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
input => q!\(Awesome opening unbalanced parenthesis!,
|
||||||
|
output => q!'\\\\(Awesome opening unbalanced parenthesis'!,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
input => q!Prefixed \(Awesome opening unbalanced parenthesis!,
|
||||||
|
output => q!'Prefixed \\\\(Awesome opening unbalanced parenthesis'!,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
input => q!cool closing unbalanced parenthesis\)!,
|
||||||
|
output => q!'cool closing unbalanced parenthesis\\\\)'!,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
input => q!cool closing unbalanced parenthesis\) with suffix!,
|
||||||
|
output => q!'cool closing unbalanced parenthesis\\\\) with suffix'!,
|
||||||
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
my $numTests = scalar @testSets;
|
my $numTests = scalar @testSets;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue