Code

Ticket #398: implicit-end.diff

File implicit-end.diff, 1.1 KB (added by jvr_django@…, 9 years ago)

Patch for Parser.parse() to pass parse_until to do_* callbacks

Line 
1Index: django-trunk/django/core/template.py
2===================================================================
3--- django-trunk/django/core/template.py        (revision 544)
4+++ django-trunk/django/core/template.py        (working copy)
5@@ -55,6 +55,7 @@
6 '\n<html>\n\n</html>\n'
7 """
8 import re
9+import inspect
10 
11 __all__ = ('Template','Context','compile_string')
12 
13@@ -216,7 +217,13 @@
14                     raise TemplateSyntaxError, "Empty block tag"
15                 try:
16                     # execute callback function for this tag and append resulting node
17-                    nodelist.append(registered_tags[command](self, token))
18+                    callback = registered_tags[command]
19+                    (args, _, _, _) = inspect.getargspec(callback)
20+                    if len(args) == 3:
21+                        node = callback(self, token, parse_until)
22+                    else:
23+                        node = callback(self, token)
24+                    nodelist.append(node)
25                 except KeyError:
26                     raise TemplateSyntaxError, "Invalid block tag: '%s'" % command
27         if parse_until: