]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Strip parens from filter params list
authorKevin Brown <kevin@kevin-brown.com>
Fri, 8 May 2020 09:58:24 +0000 (05:58 -0400)
committerKevin <kevin@kevin-brown.com>
Sun, 10 May 2020 01:50:06 +0000 (21:50 -0400)
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.

tatsu_grammar.txt
test_template.jinja

index c3b9a0f33e6fd2a9c4cf35d63c2bb09971884daa..14ece8984289b6925953efc4cd606fb7e2fb8cbe 100644 (file)
@@ -83,8 +83,26 @@ variable_filter
     =\r
     {SP}* "|" {SP}* @:filter\r
     ;\r
-filter                  = @+:IDENTIFIER [@+:filter_parameters];\r
-filter_parameters       = "(" [@+:filter_parameter {"," {SP}* @+:filter_parameter}*] ")";\r
+filter =\r
+    @+:IDENTIFIER\r
+    [@+:filter_parameters]\r
+    ;\r
+\r
+filter_parameters\r
+    =\r
+    "("\r
+        @:[filter_parameter_list]\r
+    ")"\r
+    ;\r
+filter_parameter_list\r
+    =\r
+    @+:filter_parameter {filter_parameter_separator ~ @+:filter_parameter}*\r
+    ;\r
+\r
+filter_parameter_separator\r
+    =\r
+    {SP}* "," {SP}*\r
+    ;\r
 filter_parameter        = {!"," !")" CHAR}* ;\r
 \r
 comment_expression      = comment_open comment_content comment_close ;\r
@@ -96,7 +114,7 @@ content                 = !(block_open | variable_open | comment_open) CHAR ;
 \r
 IDENTIFIER\r
     =\r
-    /[a-zA-Z]+/\r
+    /[a-zA-Z][a-zA-Z0-9]*/\r
     ;\r
 \r
 ALPHA\r
index 17a4894e738c1d83f0af0fa3044f35ca8115382a..0240e9559ad41cce8f0e06bae864b805124a9e65 100644 (file)
@@ -1,8 +1,10 @@
 {% with key=val %}\r
-{{ kkk  |test(first,second, third)|filter}}\r
+{{ kkk  |test(first ,second, third)|filter | lastFilter}}\r
 {%block single key=val param=value %}\r
 test {{var}}\r
 {%endblock%}\r
 {# comment contents\r
 across lines #}\r
-{% raw %}{% block %}fake content{{ fake vars }}{% endraw %}
\ No newline at end of file
+{% raw %}\r
+    {% block %}fake content{{ fake vars }}\r
+{% endraw %}
\ No newline at end of file