# HG changeset patch # User mgood # Date 1167509568 0 # Node ID 7016f404b91556fc0556514534462f0bb289877e # Parent cab6b0256019daaf82e45a4fd273faf4f08cc90c add visitor for xor operator diff --git a/genshi/template/eval.py b/genshi/template/eval.py --- a/genshi/template/eval.py +++ b/genshi/template/eval.py @@ -289,7 +289,8 @@ def _visitBoolOp(self, node): node.nodes = [self.visit(x) for x in node.nodes] return node - visitAnd = visitOr = visitBitand = visitBitor = visitAssTuple = _visitBoolOp + visitAnd = visitOr = visitBitand = visitBitor = visitBitxor = _visitBoolOp + visitAssTuple = _visitBoolOp def _visitBinOp(self, node): node.left = self.visit(node.left) 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 @@ -133,6 +133,10 @@ self.assertEqual(1, Expression("1 | 0").evaluate({})) self.assertEqual(1, Expression("x | y").evaluate({'x': 1, 'y': 0})) + def test_binop_xor(self): + self.assertEqual(1, Expression("1 ^ 0").evaluate({})) + self.assertEqual(1, Expression("x ^ y").evaluate({'x': 1, 'y': 0})) + def test_binop_contains(self): self.assertEqual(True, Expression("1 in (1, 2, 3)").evaluate({})) self.assertEqual(True, Expression("x in y").evaluate({'x': 1,