Mercurial > genshi > mirror
changeset 135:9d7ca94133be stable-0.1.x
0.1.x branch: Merged bugfix for expression evaluation from [167].
author | cmlenz |
---|---|
date | Sun, 06 Aug 2006 19:51:35 +0000 |
parents | ebd3a65e0d40 |
children | |
files | markup/eval.py markup/tests/eval.py |
diffstat | 2 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/markup/eval.py +++ b/markup/eval.py @@ -289,5 +289,5 @@ def visitSubscript(self, node, *args, **kwargs): return ast.CallFunc(ast.Name('_lookup_item'), [ast.Name('data'), self.visit(node.expr, *args, **kwargs), - ast.Tuple(map(self.visit, node.subs, *args, **kwargs))] + ast.Tuple(map(lambda x: self.visit(x, *args, **kwargs), node.subs))] )
--- a/markup/tests/eval.py +++ b/markup/tests/eval.py @@ -214,6 +214,16 @@ self.assertEqual([2, 3, 4, 5, 6], expr.evaluate({'numbers': range(5), 'offset': 2})) + def test_list_comprehension_with_getattr(self): + items = [{'name': 'a', 'value': 1}, {'name': 'b', 'value': 2}] + expr = Expression("[i.name for i in items if i.value > 1]") + self.assertEqual(['b'], expr.evaluate({'items': items})) + + def test_list_comprehension_with_getitem(self): + items = [{'name': 'a', 'value': 1}, {'name': 'b', 'value': 2}] + expr = Expression("[i['name'] for i in items if i['value'] > 1]") + self.assertEqual(['b'], expr.evaluate({'items': items})) + def suite(): suite = unittest.TestSuite()