]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Fix parameters eating whitespace
authorKevin Brown <kevin@kevin-brown.com>
Fri, 8 May 2020 22:57:33 +0000 (18:57 -0400)
committerKevin <kevin@kevin-brown.com>
Sun, 10 May 2020 01:50:06 +0000 (21:50 -0400)
This was causing issues for anything that depends on significant
whitespace to follow a parameter, since it wasn't being made
available within the grammar.

tatsu_grammar.txt

index e796022a261d7dd07ef6ef69b5d22b113e2e79be..ba9122d4f5c2afb1f6939ed935a48f55c753fe54 100644 (file)
@@ -45,7 +45,7 @@ block_expression
 \r
 block_start\r
     =\r
-    block_open type:`blockstart` !("end") name:IDENTIFIER parameters:[ { block_parameter }* ] block_close\r
+    block_open type:`blockstart` !("end") name:IDENTIFIER {SP}* parameters:[ block_parameters ] {SP}* block_close\r
     ;\r
 \r
 block_end\r
@@ -70,7 +70,7 @@ line_block_expression
 \r
 line_block_start\r
     =\r
-    line_block_open type:`blockstart` !("end") name:IDENTIFIER parameters:[ { block_parameter }* ] ":\n"\r
+    line_block_open type:`blockstart` !("end") name:IDENTIFIER {SP}* parameters:[ block_parameters ] { !"\n" SP }* ":\n"\r
     ;\r
 \r
 line_block_end\r
@@ -85,7 +85,12 @@ line_block_open
 \r
 implicit_identifier_tuple\r
     =\r
-    {SP}* tuple+:IDENTIFIER {SP}* { "," {SP}* tuple+:IDENTIFIER {SP}* }+\r
+    tuple+:IDENTIFIER { {SP}* "," {SP}* tuple+:IDENTIFIER }+\r
+    ;\r
+\r
+block_parameters\r
+    =\r
+    @+:block_parameter { {SP}* @+:block_parameter }*\r
     ;\r
 \r
 block_parameter\r
@@ -96,7 +101,7 @@ block_parameter
 \r
 block_parameter_key_value\r
     =\r
-    key:block_parameter_key "=" value:variable_accessor_call_parameter_value\r
+    key:block_parameter_key {SP}* "=" {SP}* value:variable_accessor_call_parameter_value\r
     ;\r
 \r
 block_parameter_key\r
@@ -158,7 +163,7 @@ variable_accessor_dot
 variable_accessor_call_parameters\r
     =\r
     @+:variable_accessor_call_parameter\r
-    { "," @+:variable_accessor_call_parameter }*\r
+    { {SP}* "," {SP}* @+:variable_accessor_call_parameter }*\r
     ;\r
 \r
 variable_accessor_call_parameter\r
@@ -169,7 +174,7 @@ variable_accessor_call_parameter
 \r
 variable_accessor_call_parameter_key_value\r
     =\r
-    key:variable_accessor_call_parameter_key "=" value:variable_accessor_call_parameter_value {SP}*\r
+    key:variable_accessor_call_parameter_key {SP}* "=" {SP}* value:variable_accessor_call_parameter_value\r
     ;\r
 \r
 variable_accessor_call_parameter_value_only\r
@@ -179,12 +184,13 @@ variable_accessor_call_parameter_value_only
 \r
 variable_accessor_call_parameter_key\r
     =\r
-    {SP}* @:IDENTIFIER {SP}*\r
+    IDENTIFIER\r
     ;\r
 \r
 variable_accessor_call_parameter_value\r
     =\r
-    {SP}* @:( variable_tests | variable_identifier ) {SP}*\r
+    | variable_tests\r
+    | variable_identifier\r
     ;\r
 \r
 variable_tests\r
@@ -192,8 +198,8 @@ variable_tests
     left:variable_identifier {SP}*\r
     (\r
         | ( "is" {SP}* test_function:variable_accessor_call_parameter_value )\r
-        | ( comparator:variable_tests_comparator right: variable_accessor_call_parameter_value )\r
-        | ( logical_operator:variable_tests_logical_operator right: variable_accessor_call_parameter_value )\r
+        | ( comparator:variable_tests_comparator {SP}* right:variable_accessor_call_parameter_value )\r
+        | ( logical_operator:variable_tests_logical_operator {SP}* right:variable_accessor_call_parameter_value )\r
     )\r
     ;\r
 \r