# HG changeset patch # User mgood # Date 1166484488 0 # Node ID 1dc3d3df4a85042433cad1468e8c26e20dfa885f # Parent 9c88f4137b03f90efaef5af23e8d664d85803a55 add support for Python 2.5 conditional expressions (fixes #74) diff --git a/genshi/template/eval.py b/genshi/template/eval.py --- 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): diff --git a/genshi/template/tests/eval.py b/genshi/template/tests/eval.py --- 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)}))