]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Parse isolated set blocks
authorKevin <kevin@kevin-brown.com>
Sun, 10 May 2020 17:59:23 +0000 (13:59 -0400)
committerKevin <kevin@kevin-brown.com>
Sun, 10 May 2020 17:59:23 +0000 (13:59 -0400)
This adds support for set blocks where a key-value pair is being
sent in so there is no matching pair of statement.

new_parser.py

index 1dbd839d6632cdbfbe6eb5ca19bbd8b5013213b7..a8d507122b210822017ba6354d990995bff2cd76 100644 (file)
@@ -34,6 +34,9 @@ def parse_block(ast):
     if block_name == 'from':\r
         return parse_block_from(ast)\r
 \r
+    if block_name == 'set':\r
+        return parse_block_set(ast)\r
+\r
     return None\r
 \r
 def parse_block_pair(ast):\r
@@ -117,6 +120,22 @@ def parse_block_if(ast):
         lineno=lineno_from_parseinfo(ast['parseinfo'])\r
     )\r
 \r
+def parse_block_set(ast):\r
+    if 'block' in ast:\r
+        assignment = ast['block']['parameters'][0]\r
+\r
+        if isinstance(assignment['key'], str):\r
+            key = assignment['key']\r
+        else:\r
+            key = parse_variable(assignment['key'], variable_context="store")\r
+\r
+        return nodes.Assign(\r
+            key,\r
+            parse_variable(assignment['value']),\r
+            lineno=lineno_from_parseinfo(ast['parseinfo'])\r
+        )\r
+    return None\r
+\r
 def parse_block_with(ast):\r
     with_node = nodes.With(\r
         lineno=lineno_from_parseinfo(ast['parseinfo'])\r