nodes have access to environment now
--HG--
branch : trunk
diff --git a/jinja2/compiler.py b/jinja2/compiler.py
index c963b8f..44087f1 100644
--- a/jinja2/compiler.py
+++ b/jinja2/compiler.py
@@ -39,11 +39,12 @@
def has_safe_repr(value):
"""Does the node have a safe representation?"""
- if value is None:
+ if value is None or value is NotImplemented or value is Ellipsis:
return True
- if isinstance(value, (int, long, float, basestring, StaticLoopContext)):
+ if isinstance(value, (bool, int, long, float, complex, basestring,
+ StaticLoopContext)):
return True
- if isinstance(value, (tuple, list)):
+ if isinstance(value, (tuple, list, set, frozenset)):
for item in value:
if not has_safe_repr(item):
return False
@@ -148,7 +149,7 @@
if not self.identifiers.is_declared(node.name, self.hard_scope):
self.identifiers.undeclared.add(node.name)
- def visit_FilterCall(self, node):
+ def visit_Filter(self, node):
if not node.name in self.identifiers.declared_filter:
uf = self.identifiers.undeclared_filter.get(node.name, 0) + 1
if uf > 1:
@@ -589,15 +590,13 @@
self.visit(node.step, frame)
def visit_Filter(self, node, frame):
- for filter in node.filters:
- if filter.name in frame.identifiers.declared_filter:
- self.write('f_%s(' % filter.name)
- else:
- self.write('context.filter[%r](' % filter.name)
+ if node.name in frame.identifiers.declared_filter:
+ self.write('f_%s(' % node.name)
+ else:
+ self.write('context.filter[%r](' % node.name)
self.visit(node.node, frame)
- for filter in reversed(node.filters):
- self.signature(filter, frame)
- self.write(')')
+ self.signature(node, frame)
+ self.write(')')
def visit_Test(self, node, frame):
self.write('context.tests[%r](')