]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Support parsing `{% block %}` blocks
authorKevin <kevin@kevin-brown.com>
Sun, 10 May 2020 16:27:20 +0000 (12:27 -0400)
committerKevin <kevin@kevin-brown.com>
Sun, 10 May 2020 16:27:20 +0000 (12:27 -0400)
This does not currently parse out the scoped parameter but that will
come soon enough.

new_parser.py

index e491d0f6061deff0e25b7f3e31fa398885d1761d..77487f8c3286dea75afa411ba74ab59d989d3e50 100644 (file)
@@ -29,7 +29,9 @@ def parse(ast):
     return None\r
 \r
 def parse_block(ast):\r
-    if ast['block']['name'] == 'from':\r
+    block_name = ast['block']['name']\r
+\r
+    if block_name == 'from':\r
         return parse_block_from(ast)\r
 \r
     return None\r
@@ -37,14 +39,28 @@ def parse_block(ast):
 def parse_block_pair(ast):\r
     block_name = ast['start']['name']\r
 \r
-    if block_name == 'with':\r
-        return parse_block_with(ast)\r
+    if block_name == 'block':\r
+        return parse_block_block(ast)\r
 \r
     if block_name == 'for':\r
         return parse_block_for(ast)\r
 \r
+    if block_name == 'with':\r
+        return parse_block_with(ast)\r
+\r
     return None\r
 \r
+def parse_block_block(ast):\r
+    name = parse_variable(ast['start']['parameters'][0]['value']).name\r
+    scoped = False\r
+\r
+    return nodes.Block(\r
+        name,\r
+        parse(ast['contents']),\r
+        scoped,\r
+        lineno=lineno_from_parseinfo(ast['parseinfo'])\r
+    )\r
+\r
 def parse_block_for(ast):\r
     target = None\r
     iter = None\r