]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Support for dyanamic args and kwargs in calls
authorKevin Brown <kevin@kevin-brown.com>
Fri, 15 May 2020 03:35:38 +0000 (23:35 -0400)
committerKevin Brown <kevin@kevin-brown.com>
Fri, 15 May 2020 03:35:38 +0000 (23:35 -0400)
grammar.ebnf
src/jinja2/new_parser.py

index 8a988c9dd828a4e30fa268e9428ffcf108943aaf..8041a539ba6abbd5b527b4a0863f9a9e753bf91e 100644 (file)
@@ -219,6 +219,18 @@ variable_accessor_call_parameter
     =\r
     | variable_accessor_call_parameter_key_value\r
     | variable_accessor_call_parameter_value_only\r
+    | variable_accessor_call_parameter_vararg\r
+    | variable_accessor_call_parameter_varkwarg\r
+    ;\r
+\r
+variable_accessor_call_parameter_vararg\r
+    =\r
+    "*" dynamic_argument:variable_identifier\r
+    ;\r
+\r
+variable_accessor_call_parameter_varkwarg\r
+    =\r
+    "**" dynamic_keyword_argument:variable_identifier\r
     ;\r
 \r
 variable_accessor_call_parameter_key_value\r
index cfe106942ec1599f18659a03204d594cf3461a3b..735d7cc121c63a0046da25b5499e66b5d63e70d4 100644 (file)
@@ -755,6 +755,23 @@ def parse_variable_accessor_call(ast):
 \r
     if ast['parameters']:\r
         for argument in ast['parameters']:\r
+            if dynamic_kwargs is not None:\r
+                raise\r
+\r
+            if 'dynamic_keyword_argument' in argument:\r
+\r
+                dynamic_kwargs = parse_variable(argument['dynamic_keyword_argument'])\r
+\r
+                continue\r
+\r
+            if dynamic_args is not None:\r
+                raise\r
+\r
+            if 'dynamic_argument' in argument:\r
+                dynamic_args = parse_variable(argument['dynamic_argument'])\r
+\r
+                continue\r
+\r
             value = parse_variable(argument['value'])\r
 \r
             if 'key' in argument:\r