Mercurial > genshi > mirror
diff markup/eval.py @ 198:ca8a9defe6fe trunk
Implemented support for generator expressions (fixes #16)
author | mgood |
---|---|
date | Thu, 24 Aug 2006 22:42:07 +0000 |
parents | c0535b218466 |
children | 48fab34e5e4d |
line wrap: on
line diff
--- a/markup/eval.py +++ b/markup/eval.py @@ -331,6 +331,26 @@ node.test = self.visit(node.test, *args, **kwargs) return node + def visitGenExpr(self, node, *args, **kwargs): + node.code = self.visit(node.code, *args, **kwargs) + node.filename = '<string>' # workaround for bug in pycodegen + return node + + def visitGenExprFor(self, node, *args, **kwargs): + node.assign = self.visit(node.assign, *args, **kwargs) + node.iter = self.visit(node.iter, *args, **kwargs) + node.ifs = map(lambda x: self.visit(x, *args, **kwargs), node.ifs) + return node + + def visitGenExprIf(self, node, *args, **kwargs): + node.test = self.visit(node.test, locals_=True, *args, **kwargs) + return node + + def visitGenExprInner(self, node, *args, **kwargs): + node.expr = self.visit(node.expr, locals_=True, *args, **kwargs) + node.quals = map(lambda x: self.visit(x, *args, **kwargs), node.quals) + return node + class ExpressionASTTransformer(ASTTransformer): """Concrete AST transformer that implements the AST transformations needed