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)}))
Copyright (C) 2012-2017 Edgewall Software