From 2879f8bcc02d75d256bf7db97251a8708ef2466e Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 16 Jan 2012 13:02:51 -0500 Subject: - [feature/bug] Can now refer to context variables within extra arguments to <%block>, <%def>, i.e. <%block name="foo" cache_key="${somekey}">. Filters can also be used in this way, i.e. <%def name="foo()" filter="myfilter"> then template.render(myfilter=some_callable) [ticket:180] --- mako/parsetree.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'mako/parsetree.py') diff --git a/mako/parsetree.py b/mako/parsetree.py index 9896dd8..98a8701 100644 --- a/mako/parsetree.py +++ b/mako/parsetree.py @@ -431,10 +431,13 @@ class DefTag(Tag): for c in self.function_decl.defaults: res += list(ast.PythonCode(c, **self.exception_kwargs). undeclared_identifiers) - return res + list(self.filter_args.\ + return set(res).union( + self.filter_args.\ undeclared_identifiers.\ difference(filters.DEFAULT_ESCAPES.keys()) - ) + ).union( + self.expression_undeclared_identifiers + ) class BlockTag(Tag): __keyword__ = 'block' @@ -487,7 +490,12 @@ class BlockTag(Tag): return self.body_decl.argnames def undeclared_identifiers(self): - return [] + return (self.filter_args.\ + undeclared_identifiers.\ + difference(filters.DEFAULT_ESCAPES.keys()) + ).union(self.expression_undeclared_identifiers) + + class CallTag(Tag): __keyword__ = 'call' -- cgit v1.2.3