]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Support the autoescape block
authorKevin <kevin@kevin-brown.com>
Mon, 11 May 2020 23:40:15 +0000 (19:40 -0400)
committerKevin <kevin@kevin-brown.com>
Mon, 11 May 2020 23:40:15 +0000 (19:40 -0400)
new_parser.py
test_template.jinja

index 2a07f681ccec4fdb78b7ea19627ea573cadb1d79..636eacbc5283ab96c3f0ba09e1db09a969554047 100644 (file)
@@ -78,6 +78,9 @@ def parse_block(ast):
 def parse_block_pair(ast):\r
     block_name = ast['start']['name']\r
 \r
+    if block_name == 'autoescape':\r
+        return parse_block_autoescape(ast)\r
+\r
     if block_name == 'block':\r
         return parse_block_block(ast)\r
 \r
@@ -98,6 +101,20 @@ def parse_block_pair(ast):
 \r
     return None\r
 \r
+def parse_block_autoescape(ast):\r
+    return nodes.Scope(\r
+        [nodes.ScopedEvalContextModifier(\r
+            [nodes.Keyword(\r
+                'autoescape',\r
+                parse_variable(ast['start']['parameters'][0]['value']),\r
+                lineno=lineno_from_parseinfo(ast['start']['parameters'][0]['parseinfo'])\r
+            )],\r
+            parse(ast['contents']),\r
+            lineno=lineno_from_parseinfo(ast['parseinfo'])\r
+        )],\r
+        lineno=lineno_from_parseinfo(ast['parseinfo'])\r
+    )\r
+\r
 def parse_block_block(ast):\r
     name = parse_variable(ast['start']['parameters'][0]['value']).name\r
     scoped = False\r
index 3cefad881a16ca9288acbb8a8759d8d7d068e476..fdd531afffa68f4fef4c998fd76754001a1f1458 100644 (file)
@@ -49,4 +49,11 @@ across lines #}
         <ul class="submenu">{{ loop(item.children) }}</ul>\r
     {%- endif %}</li>\r
 {%- endfor %}\r
-</ul>
\ No newline at end of file
+</ul>\r
+{% autoescape true %}\r
+    Autoescaping is active within this block\r
+{% endautoescape %}\r
+\r
+{% autoescape false %}\r
+    Autoescaping is inactive within this block\r
+{% endautoescape %}
\ No newline at end of file