Show More
@@ -42,8 +42,7 b' class engine(object):' | |||||
42 | filter uses function to transform value. syntax is |
|
42 | filter uses function to transform value. syntax is | |
43 | {key|filter1|filter2|...}.''' |
|
43 | {key|filter1|filter2|...}.''' | |
44 |
|
44 | |||
45 |
template_re = re.compile(r |
|
45 | template_re = re.compile(r'{([\w\|%]+)}|#([\w\|%]+)#') | |
46 | r"(\w+)(?:(?:%(\w+))|((?:\|\w+)*))[#}]") |
|
|||
47 |
|
46 | |||
48 | def __init__(self, loader, filters={}, defaults={}): |
|
47 | def __init__(self, loader, filters={}, defaults={}): | |
49 | self.loader = loader |
|
48 | self.loader = loader | |
@@ -70,7 +69,8 b' class engine(object):' | |||||
70 | else: |
|
69 | else: | |
71 | yield str(item) |
|
70 | yield str(item) | |
72 |
|
71 | |||
73 |
def _format(self, |
|
72 | def _format(self, expr, get, map): | |
|
73 | key, format = expr.split('%') | |||
74 | v = get(key) |
|
74 | v = get(key) | |
75 | if not hasattr(v, '__iter__'): |
|
75 | if not hasattr(v, '__iter__'): | |
76 | raise SyntaxError(_("Error expanding '%s%%%s'") % (key, format)) |
|
76 | raise SyntaxError(_("Error expanding '%s%%%s'") % (key, format)) | |
@@ -79,9 +79,10 b' class engine(object):' | |||||
79 | lm.update(i) |
|
79 | lm.update(i) | |
80 | yield self.process(format, lm) |
|
80 | yield self.process(format, lm) | |
81 |
|
81 | |||
82 |
def _filter(self, |
|
82 | def _filter(self, expr, get, map): | |
83 | v = get(key) |
|
83 | parts = expr.split('|') | |
84 | for f in filters.split('|')[1:]: |
|
84 | v = get(parts[0]) | |
|
85 | for f in parts[1:]: | |||
85 | v = self.filters[f](v) |
|
86 | v = self.filters[f](v) | |
86 | return v |
|
87 | return v | |
87 |
|
88 | |||
@@ -103,18 +104,19 b' class engine(object):' | |||||
103 | break |
|
104 | break | |
104 |
|
105 | |||
105 | start, end = m.span(0) |
|
106 | start, end = m.span(0) | |
106 |
|
|
107 | variants = m.groups() | |
|
108 | expr = variants[0] or variants[1] | |||
107 |
|
109 | |||
108 | if start: |
|
110 | if start: | |
109 | yield tmpl[:start] |
|
111 | yield tmpl[:start] | |
110 | tmpl = tmpl[end:] |
|
112 | tmpl = tmpl[end:] | |
111 |
|
113 | |||
112 |
if |
|
114 | if '%' in expr: | |
113 |
yield self._format( |
|
115 | yield self._format(expr, get, map) | |
114 |
elif |
|
116 | elif '|' in expr: | |
115 |
yield self._filter( |
|
117 | yield self._filter(expr, get, map) | |
116 | else: |
|
118 | else: | |
117 |
yield get( |
|
119 | yield get(expr) | |
118 |
|
120 | |||
119 | engines = {'default': engine} |
|
121 | engines = {'default': engine} | |
120 |
|
122 |
General Comments 0
You need to be logged in to leave comments.
Login now