]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Add list and tuple literal parsing
authorKevin <kevin@kevin-brown.com>
Sun, 10 May 2020 16:01:52 +0000 (12:01 -0400)
committerKevin <kevin@kevin-brown.com>
Sun, 10 May 2020 16:01:52 +0000 (12:01 -0400)
new_parser.py

index c8b6ec4aca78fc8d6a92daef3eea9b6fd6820f3a..ac1edf91fd2f7cb5781033b35ae300b256d54d35 100644 (file)
@@ -90,8 +90,7 @@ def parse_literal(ast):
             ''.join(ast['value']),\r
             lineno=lineno_from_parseinfo(ast['parseinfo'])\r
         )\r
-\r
-    if literal_type == 'number':\r
+    elif literal_type == 'number':\r
         if 'fractional' not in ast and 'exponent' not in ast:\r
             const = int(ast['whole'])\r
         else:\r
@@ -109,6 +108,26 @@ def parse_literal(ast):
             const,\r
             lineno=lineno_from_parseinfo(ast['parseinfo'])\r
         )\r
+    elif literal_type == 'list':\r
+        items = [\r
+            parse_literal(item) for item in ast['value']\r
+        ]\r
+\r
+        return nodes.List(\r
+            items,\r
+            lineno=lineno_from_parseinfo(ast['parseinfo'])\r
+        )\r
+    elif literal_type == 'tuple':\r
+        items = [\r
+            parse_literal(item) for item in ast['value']\r
+        ]\r
+\r
+        return nodes.Tuple(\r
+            items,\r
+            'load',\r
+            lineno=lineno_from_parseinfo(ast['parseinfo'])\r
+        )\r
+    return None\r
 \r
 def parse_output(ast):\r
     return nodes.Output(\r