diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2006-01-15 01:51:30 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2006-01-15 01:51:30 +0000 |
| commit | 0eaee6f5d4976f3b0146d512c43d2f9a19f39021 (patch) | |
| tree | 1b7dee9df4301fc1bc248115873ad6ac0a23b15c /django | |
| parent | e260037e168152b17e4f46685ccce301fe3f5c99 (diff) | |
Fixed #1067 and #276 -- Added a {% spaceless %} tag, available in all templates
git-svn-id: http://code.djangoproject.com/svn/django/trunk@1967 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
| -rw-r--r-- | django/core/template/defaulttags.py | 14 | ||||
| -rw-r--r-- | django/utils/html.py | 4 |
2 files changed, 18 insertions, 0 deletions
diff --git a/django/core/template/defaulttags.py b/django/core/template/defaulttags.py index 518498664d..daad1c2dfa 100644 --- a/django/core/template/defaulttags.py +++ b/django/core/template/defaulttags.py @@ -249,6 +249,14 @@ class NowNode(Node): df = DateFormat(datetime.now()) return df.format(self.format_string) +class SpacelessNode(Node): + def __init__(self, nodelist): + self.nodelist = nodelist + + def render(self, context): + from django.utils.html import strip_spaces_between_tags + return strip_spaces_between_tags(self.nodelist.render(context).strip()) + class TemplateTagNode(Node): mapping = {'openblock': BLOCK_TAG_START, 'closeblock': BLOCK_TAG_END, @@ -726,6 +734,12 @@ def regroup(parser, token): return RegroupNode(target, expression, var_name) regroup = register.tag(regroup) +def spaceless(parser, token): + nodelist = parser.parse(('endspaceless',)) + parser.delete_first_token() + return SpacelessNode(nodelist) +spaceless = register.tag(spaceless) + #@register.tag def templatetag(parser, token): """ diff --git a/django/utils/html.py b/django/utils/html.py index 730744c9e1..d89067106e 100644 --- a/django/utils/html.py +++ b/django/utils/html.py @@ -37,6 +37,10 @@ def strip_tags(value): "Returns the given HTML with all tags stripped" return re.sub(r'<[^>]*?>', '', value) +def strip_spaces_between_tags(value): + "Returns the given HTML with spaces between tags stripped" + return re.sub(r'>\s+<', '><', value) + def strip_entities(value): "Returns the given HTML with all entities (&something;) stripped" return re.sub(r'&(?:\w+|#\d);', '', value) |
