]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Add support for call block
authorKevin <kevin@kevin-brown.com>
Wed, 13 May 2020 02:24:40 +0000 (22:24 -0400)
committerKevin <kevin@kevin-brown.com>
Wed, 13 May 2020 02:24:40 +0000 (22:24 -0400)
new_parser.py
test_template.jinja

index 5e3b0c5cef55cfc5352dc9d918424a50b572fc75..7ce63f7bf3582e12d5c21b3ec7c458e2a2ac5faf 100644 (file)
@@ -93,6 +93,9 @@ def parse_block_pair(ast):
     if block_name == 'block':\r
         return parse_block_block(ast)\r
 \r
+    if block_name == 'call':\r
+        return parse_block_call(ast)\r
+\r
     if block_name == 'for':\r
         return parse_block_for(ast)\r
 \r
@@ -135,6 +138,25 @@ def parse_block_block(ast):
         lineno=lineno_from_parseinfo(ast['parseinfo'])\r
     )\r
 \r
+def parse_block_call(ast):\r
+    parameters = ast['start']['parameters']\r
+\r
+    call = parse_variable(parameters[-1]['value'])\r
+    args = []\r
+    defaults = []\r
+    body = parse(ast['contents'])\r
+\r
+    for arg in parameters[:-1]:\r
+        args.append(parse_variable(arg['value'], variable_context='param'))\r
+\r
+    return nodes.CallBlock(\r
+        call,\r
+        args,\r
+        defaults,\r
+        body,\r
+        lineno=lineno_from_parseinfo(ast['parseinfo'])\r
+    )\r
+\r
 def parse_block_extends(ast):\r
     return nodes.Extends(\r
         parse_conditional_expression(ast['block']['parameters'][0]['value'])\r
index ac5fa1b66952ee3ed0eba1921fd4022d9dd3ca7f..8a38f1aa35cfd13cb10c01b443069251b69e8357 100644 (file)
@@ -82,4 +82,12 @@ across lines #}
     {{ item }}\r
 {% else %}\r
     did not iterate\r
-{% endfor %}
\ No newline at end of file
+{% endfor %}\r
+{% call(user) dump_users(list_of_user) %}\r
+    <dl>\r
+        <dl>Realname</dl>\r
+        <dd>{{ user.realname|e }}</dd>\r
+        <dl>Description</dl>\r
+        <dd>{{ user.description }}</dd>\r
+    </dl>\r
+{% endcall %}\r