Mercurial > genshi > mirror
changeset 393:1dc3d3df4a85 trunk
add support for Python 2.5 conditional expressions (fixes #74)
author | mgood |
---|---|
date | Mon, 18 Dec 2006 23:28:08 +0000 |
parents | 9c88f4137b03 |
children | cab6b0256019 |
files | genshi/template/eval.py genshi/template/tests/eval.py |
diffstat | 2 files changed, 12 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/genshi/template/eval.py +++ b/genshi/template/eval.py @@ -310,6 +310,12 @@ visitUnaryAdd = visitUnarySub = visitNot = visitInvert = _visitUnaryOp visitBackquote = _visitUnaryOp + def visitIfExp(self, node): + node.test = self.visit(node.test) + node.then = self.visit(node.then) + node.else_ = self.visit(node.else_) + return node + # Identifiers, Literals and Comprehensions def _visitDefault(self, node):
--- a/genshi/template/tests/eval.py +++ b/genshi/template/tests/eval.py @@ -278,6 +278,12 @@ expr = Expression("list(i['name'] for i in items if i['value'] > 1)") self.assertEqual(['b'], expr.evaluate({'items': items})) + if sys.version_info >= (2, 5): + def test_conditional_expression(self): + expr = Expression("'T' if foo else 'F'") + self.assertEqual('T', expr.evaluate({'foo': True})) + self.assertEqual('F', expr.evaluate({'foo': False})) + def test_slice(self): expr = Expression("numbers[0:2]") self.assertEqual([0, 1], expr.evaluate({'numbers': range(5)}))