From: Kevin Brown Date: Fri, 8 May 2020 09:58:24 +0000 (-0400) Subject: Strip parens from filter params list X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ca3ecffd9a7add2dbfe19662d2d2e3e547b60576;p=thirdparty%2Fjinja.git Strip parens from filter params list This isn't necessary, we will always know that the second item within the filter list is the set of filter parameters. This also ensures that any time the filter separator is detected, we force parsing the next token as a filter parameter. --- diff --git a/tatsu_grammar.txt b/tatsu_grammar.txt index c3b9a0f3..14ece898 100644 --- a/tatsu_grammar.txt +++ b/tatsu_grammar.txt @@ -83,8 +83,26 @@ variable_filter = {SP}* "|" {SP}* @:filter ; -filter = @+:IDENTIFIER [@+:filter_parameters]; -filter_parameters = "(" [@+:filter_parameter {"," {SP}* @+:filter_parameter}*] ")"; +filter = + @+:IDENTIFIER + [@+:filter_parameters] + ; + +filter_parameters + = + "(" + @:[filter_parameter_list] + ")" + ; +filter_parameter_list + = + @+:filter_parameter {filter_parameter_separator ~ @+:filter_parameter}* + ; + +filter_parameter_separator + = + {SP}* "," {SP}* + ; filter_parameter = {!"," !")" CHAR}* ; comment_expression = comment_open comment_content comment_close ; @@ -96,7 +114,7 @@ content = !(block_open | variable_open | comment_open) CHAR ; IDENTIFIER = - /[a-zA-Z]+/ + /[a-zA-Z][a-zA-Z0-9]*/ ; ALPHA diff --git a/test_template.jinja b/test_template.jinja index 17a4894e..0240e955 100644 --- a/test_template.jinja +++ b/test_template.jinja @@ -1,8 +1,10 @@ {% with key=val %} -{{ kkk |test(first,second, third)|filter}} +{{ kkk |test(first ,second, third)|filter | lastFilter}} {%block single key=val param=value %} test {{var}} {%endblock%} {# comment contents across lines #} -{% raw %}{% block %}fake content{{ fake vars }}{% endraw %} \ No newline at end of file +{% raw %} + {% block %}fake content{{ fake vars }} +{% endraw %} \ No newline at end of file