Code

Ticket #3184: defaultfilters.3.diff

File defaultfilters.3.diff, 1.6 KB (added by dummy@…, 8 years ago)

hopefully my last version of the patch

Line 
1Index: django/template/defaultfilters.py
2===================================================================
3--- django/template/defaultfilters.py   (Revision 4236)
4+++ django/template/defaultfilters.py   (Arbeitskopie)
5@@ -5,6 +5,7 @@
6 from django.utils.translation import gettext
7 import re
8 import random as random_module
9+from types import StringTypes, ListType
10 
11 register = Library()
12 
13@@ -287,13 +288,37 @@
14         </ul>
15         </li>
16     """
17-    def _helper(value, tabs):
18+    def _create(value, tabs):
19         indent = '\t' * tabs
20         if value[1]:
21             return '%s<li>%s\n%s<ul>\n%s\n%s</ul>\n%s</li>' % (indent, value[0], indent,
22                 '\n'.join([_helper(v, tabs+1) for v in value[1]]), indent, indent)
23         else:
24             return '%s<li>%s</li>' % (indent, value[0])
25+
26+    def _helper(value, tabs):
27+        if type(value) != ListType:
28+            value = [value]
29+        l = len(value)
30+        if l == 0:
31+            return ''
32+        else:
33+            html = []
34+            i = 0
35+            while i < l:
36+                if type(value[i]) == ListType:
37+                    html.append(_create(['', value[i]], tabs))
38+                    i += 1
39+                    continue
40+                elif i < l-1 and type(value[i+1]) == ListType:
41+                    html.append(_create([value[i], value[i+1]], tabs))
42+                    i += 2
43+                    continue
44+                else:
45+                    html.append(_create([value[i], []], tabs))
46+                i += 1
47+            return '\n'.join(html)
48+
49     return _helper(value, 1)
50 
51 ###################