diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-01-29 08:24:45 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-01-29 08:24:45 +0000 |
commit | c6849da7906431c3f161ba0a8be088a8866cbf7a (patch) | |
tree | b767418d1e987cdcdce8a27346b62e47e4875e06 /lib/mako/codegen.py | |
parent | 9e5ec11514e0dccfc34a5c14ad671c06ad38fbc1 (diff) | |
download | external_python_mako-c6849da7906431c3f161ba0a8be088a8866cbf7a.tar.gz external_python_mako-c6849da7906431c3f161ba0a8be088a8866cbf7a.tar.bz2 external_python_mako-c6849da7906431c3f161ba0a8be088a8866cbf7a.zip |
changed around filtering so you can just say "decode.utf8" or "decode.<whatever>" for generic expression decoding
Diffstat (limited to 'lib/mako/codegen.py')
-rw-r--r-- | lib/mako/codegen.py | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/lib/mako/codegen.py b/lib/mako/codegen.py index d17ae64..477ccad 100644 --- a/lib/mako/codegen.py +++ b/lib/mako/codegen.py @@ -391,8 +391,20 @@ class _GenerateRenderMethod(object): def create_filter_callable(self, args, target, is_expression): """write a filter-applying expression based on the filters present in the given filter names, adjusting for the global 'default' filter aliases as needed.""" - d = dict([(k, (v is unicode and 'unicode' or "filters." + v.func_name)) for k, v in filters.DEFAULT_ESCAPES.iteritems()]) - + def locate_encode(name): + if re.match(r'decode\..+', name): + return "filters." + name + elif name == 'unicode': + return 'unicode' + else: + return \ + {'x':'filters.xml_escape', + 'h':'filters.html_escape', + 'u':'filters.url_escape', + 'trim':'filters.trim', + 'entity':'filters.html_entities_escape', + }.get(name, name) + if is_expression and self.compiler.pagetag: args = self.compiler.pagetag.filter_args.args + args if is_expression and self.compiler.default_filters: @@ -402,10 +414,13 @@ class _GenerateRenderMethod(object): m = re.match(r'(.+?)(\(.*\))', e) if m: (ident, fargs) = m.group(1,2) - f = d.get(ident, ident) + f = locate_encode(ident) e = f + fargs else: - e = d.get(e, e) + x = e + e = locate_encode(e) + if e is None: + raise "der its none " + x target = "%s(%s)" % (e, target) return target |