Index: django/template/defaultfilters.py
===================================================================
--- django/template/defaultfilters.py (Revision 4235)
+++ django/template/defaultfilters.py (Arbeitskopie)
@@ -289,11 +289,39 @@
"""
def _helper(value, tabs):
indent = '\t' * tabs
- if value[1]:
- return '%s
%s\n%s\n%s' % (indent, value[0], indent,
- '\n'.join([_helper(v, tabs+1) for v in value[1]]), indent, indent)
+ if type(value) != type([]):
+ value = [value]
+ l = len(value)
+ if l == 0:
+ return ''
+ if l == 1:
+ if type(value[0]) is type([]):
+ return _helper(['', value[0]], tabs)
+ else:
+ return _helper([value[0], []], tabs)
+ if l == 2 and type(value[1]) is type([]):
+ if value[1]:
+ return '%s%s\n%s\n%s' % (indent, value[0], indent,
+ '\n'.join([_helper(v, tabs+1) for v in value[1]]), indent, indent)
+ else:
+ return '%s%s' % (indent, value[0])
else:
- return '%s%s' % (indent, value[0])
+ html = []
+ i = 0
+ while i < l:
+ if i < l-1:
+ if type(value[i]) is type([]):
+ html.append(_helper(['', value[i]], tabs))
+ i += 1
+ continue
+ elif type(value[i+1]) is type([]):
+ html.append(_helper([value[i], value[i+1]], tabs))
+ i += 2
+ continue
+ html.append(_helper([value[i], []], tabs))
+ i += 1
+ return '\n'.join(html)
+
return _helper(value, 1)
###################