summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2006-01-15 00:48:23 +0000
committerAdrian Holovaty <adrian@holovaty.com>2006-01-15 00:48:23 +0000
commit39639cfd22386856e4ee3cc9fe5e75c30bec066b (patch)
tree78618222a04c597b137cd19c07a01d63d144364d
parente702ec158fe580b8a3c218bb2466616a04a1060f (diff)
Fixed #1176 -- Changed {% comment %} template tag not to generate a nodelist, so it's now possible to comment-out broken template tags. Thanks, Kieran Holland
git-svn-id: http://code.djangoproject.com/svn/django/trunk@1964 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/core/template/__init__.py7
-rw-r--r--django/core/template/defaulttags.py3
-rw-r--r--tests/othertests/templates.py5
3 files changed, 13 insertions, 2 deletions
diff --git a/django/core/template/__init__.py b/django/core/template/__init__.py
index 60bb5e0888..6298ce24b9 100644
--- a/django/core/template/__init__.py
+++ b/django/core/template/__init__.py
@@ -311,6 +311,13 @@ class Parser(object):
self.unclosed_block_tag(parse_until)
return nodelist
+ def skip_past(self, endtag):
+ while self.tokens:
+ token = self.next_token()
+ if token.token_type == TOKEN_BLOCK and token.contents == endtag:
+ return
+ self.unclosed_block_tag([endtag])
+
def create_variable_node(self, filter_expression):
return VariableNode(filter_expression)
diff --git a/django/core/template/defaulttags.py b/django/core/template/defaulttags.py
index c11a67838a..518498664d 100644
--- a/django/core/template/defaulttags.py
+++ b/django/core/template/defaulttags.py
@@ -286,8 +286,7 @@ def comment(parser, token):
"""
Ignore everything between ``{% comment %}`` and ``{% endcomment %}``
"""
- nodelist = parser.parse(('endcomment',))
- parser.delete_first_token()
+ parser.skip_past('endcomment')
return CommentNode()
comment = register.tag(comment)
diff --git a/tests/othertests/templates.py b/tests/othertests/templates.py
index 7063720c31..f4f94e579d 100644
--- a/tests/othertests/templates.py
+++ b/tests/othertests/templates.py
@@ -144,6 +144,11 @@ TEMPLATE_TESTS = {
'comment-tag01': ("{% comment %}this is hidden{% endcomment %}hello", {}, "hello"),
'comment-tag02': ("{% comment %}this is hidden{% endcomment %}hello{% comment %}foo{% endcomment %}", {}, "hello"),
+ # Comment tag can contain invalid stuff.
+ 'comment-tag03': ("foo{% comment %} {% if %} {% endcomment %}", {}, "foo"),
+ 'comment-tag04': ("foo{% comment %} {% endblock %} {% endcomment %}", {}, "foo"),
+ 'comment-tag05': ("foo{% comment %} {% somerandomtag %} {% endcomment %}", {}, "foo"),
+
### FOR TAG ###############################################################
'for-tag01': ("{% for val in values %}{{ val }}{% endfor %}", {"values": [1, 2, 3]}, "123"),
'for-tag02': ("{% for val in values reversed %}{{ val }}{% endfor %}", {"values": [1, 2, 3]}, "321"),