Mercurial > genshi > mirror
changeset 227:96a7e5011c69 trunk
Use list comprehension instead of `map()` in the AST transformer.
author | cmlenz |
---|---|
date | Fri, 08 Sep 2006 09:17:42 +0000 |
parents | 4d8a9e03b23d |
children | a5b38b459cbb |
files | ChangeLog markup/eval.py markup/tests/eval.py |
diffstat | 3 files changed, 18 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -33,6 +33,7 @@ * Fixes for `py:match` which would get confused when it should be applied to multiple elements (ticket #49). * Using namespace prefixes in XPath expressions is now supported. + * Expressions now correctly handle slices (ticket #51). Version 0.2
--- a/markup/eval.py +++ b/markup/eval.py @@ -241,7 +241,7 @@ def visitCallFunc(self, node, *args, **kwargs): node.node = self.visit(node.node, *args, **kwargs) - node.args = map(lambda x: self.visit(x, *args, **kwargs), node.args) + node.args = [self.visit(x, *args, **kwargs) for x in node.args] if node.star_args: node.star_args = self.visit(node.star_args, *args, **kwargs) if node.dstar_args: @@ -259,13 +259,13 @@ def visitSubscript(self, node, *args, **kwargs): node.expr = self.visit(node.expr, *args, **kwargs) - node.subs = map(lambda x: self.visit(x, *args, **kwargs), node.subs) + node.subs = [self.visit(x, *args, **kwargs) for x in node.subs] return node # Operators def _visitBoolOp(self, node, *args, **kwargs): - node.nodes = map(lambda x: self.visit(x, *args, **kwargs), node.nodes) + node.nodes = [self.visit(x, *args, **kwargs) for x in node.nodes] return node visitAnd = visitOr = visitBitand = visitBitor = _visitBoolOp @@ -279,8 +279,7 @@ def visitCompare(self, node, *args, **kwargs): node.expr = self.visit(node.expr, *args, **kwargs) - node.ops = map(lambda (op, n): (op, self.visit(n, *args, **kwargs)), - node.ops) + node.ops = [(op, self.visit(n, *args, **kwargs)) for op, n in node.ops] return node def _visitUnaryOp(self, node, *args, **kwargs): @@ -301,28 +300,27 @@ return node def visitDict(self, node, *args, **kwargs): - node.items = map(lambda (k, v): (self.visit(k, *args, **kwargs), - self.visit(v, *args, **kwargs)), - node.items) + node.items = [(self.visit(k, *args, **kwargs), + self.visit(v, *args, **kwargs)) for k, v in node.items] return node def visitTuple(self, node, *args, **kwargs): - node.nodes = map(lambda n: self.visit(n, *args, **kwargs), node.nodes) + node.nodes = [self.visit(n, *args, **kwargs) for n in node.nodes] return node def visitList(self, node, *args, **kwargs): - node.nodes = map(lambda n: self.visit(n, *args, **kwargs), node.nodes) + node.nodes = [self.visit(n, *args, **kwargs) for n in node.nodes] return node def visitListComp(self, node, *args, **kwargs): node.expr = self.visit(node.expr, *args, **kwargs) - node.quals = map(lambda x: self.visit(x, *args, **kwargs), node.quals) + node.quals = [self.visit(x, *args, **kwargs) for x in node.quals] return node def visitListCompFor(self, node, *args, **kwargs): node.assign = self.visit(node.assign, *args, **kwargs) node.list = self.visit(node.list, *args, **kwargs) - node.ifs = map(lambda x: self.visit(x, *args, **kwargs), node.ifs) + node.ifs = [self.visit(x, *args, **kwargs) for x in node.ifs] return node def visitListCompIf(self, node, *args, **kwargs): @@ -337,7 +335,7 @@ 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) + node.ifs = [self.visit(x, *args, **kwargs) for x in node.ifs] return node def visitGenExprIf(self, node, *args, **kwargs): @@ -346,7 +344,7 @@ 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) + node.quals = [self.visit(x, *args, **kwargs) for x in node.quals] return node def visitSlice(self, node, *args, **kwargs): @@ -358,7 +356,7 @@ return node def visitSliceobj(self, node, *args, **kwargs): - node.nodes = map(lambda x: self.visit(x, *args, **kwargs), node.nodes) + node.nodes = [self.visit(x, *args, **kwargs) for x in node.nodes] return node @@ -385,7 +383,7 @@ def visitListComp(self, node, locals_=False): node.expr = self.visit(node.expr, locals_=True) - node.quals = map(lambda x: self.visit(x, locals_=True), node.quals) + node.quals = [self.visit(qual, locals_=True) for qual in node.quals] return node def visitName(self, node, locals_=False): @@ -397,5 +395,5 @@ def visitSubscript(self, node, locals_=False): return ast.CallFunc(ast.Name('_lookup_item'), [ ast.Name('data'), self.visit(node.expr, locals_=locals_), - ast.Tuple(map(lambda x: self.visit(x, locals_=locals_), node.subs)) + ast.Tuple([self.visit(sub, locals_=locals_) for sub in node.subs]) ])
--- a/markup/tests/eval.py +++ b/markup/tests/eval.py @@ -250,8 +250,9 @@ expr = Expression("[i['name'] for i in items if i['value'] > 1]") self.assertEqual(['b'], expr.evaluate({'items': items})) - # generator expressions only supported in Python 2.4 and up if sys.version_info >= (2, 4): + # Generator expressions only supported in Python 2.4 and up + def test_generator_expression(self): expr = Expression("list(n for n in numbers if n < 2)") self.assertEqual([0, 1], expr.evaluate({'numbers': range(5)}))