Mercurial > genshi > genshi-test
changeset 135:ce04d361f894 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 | 0987adde333a |
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()