changeset 180:061491fb4ea8 trunk

String literals in XPath expressions are assumed to be UTF-8 encoded.
author cmlenz
date Mon, 21 Aug 2006 19:25:29 +0000
parents 13909179e5e1
children e103b75a96ce
files markup/eval.py markup/tests/eval.py
diffstat 2 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/markup/eval.py
+++ b/markup/eval.py
@@ -270,6 +270,11 @@
     for template expressions.
     """
 
+    def visitConst(self, node, locals_=False):
+        if isinstance(node.value, str):
+            return ast.Const(node.value.decode('utf-8'))
+        return node
+
     def visitGetattr(self, node, locals_=False):
         return ast.CallFunc(ast.Name('_lookup_attr'), [
             ast.Name('data'), self.visit(node.expr, locals_=locals_),
--- a/markup/tests/eval.py
+++ b/markup/tests/eval.py
@@ -33,6 +33,8 @@
         self.assertEqual(u'þ', expr.evaluate({}))
         expr = Expression("u'\xfe'")
         self.assertEqual(u'þ', expr.evaluate({}))
+        expr = Expression("'\xc3\xbe'")
+        self.assertEqual(u'þ', expr.evaluate({}))
 
     def test_num_literal(self):
         self.assertEqual(42, Expression("42").evaluate({}))
Copyright (C) 2012-2017 Edgewall Software