diff markup/eval.py @ 167:7888f4104cc0

Handle non-ASCII characters in expressions. Closes #29. Thanks to Arnar Birgisson for reporting the problem and comping up with a patch!
author cmlenz
date Thu, 17 Aug 2006 15:22:12 +0000
parents 4ed68a904235
children 194025141c89
line wrap: on
line diff
--- a/markup/eval.py
+++ b/markup/eval.py
@@ -67,7 +67,9 @@
     def __init__(self, source, filename=None, lineno=-1):
         if isinstance(source, basestring):
             self.source = source
-            self.code = _compile(parse(source, 'eval'), source,
+            if isinstance(source, unicode):
+                source = '\xef\xbb\xbf' + source.encode('utf-8')
+            self.code = _compile(parse(source, 'eval'), self.source,
                                  filename=filename, lineno=lineno)
         else:
             assert isinstance(source, ast.Node)
@@ -115,8 +117,8 @@
     return new.code(0, code.co_nlocals, code.co_stacksize,
                     code.co_flags | 0x0040, code.co_code, code.co_consts,
                     code.co_names, code.co_varnames, filename,
-                    '<Expression "%s">' % (str(source) or '?'), lineno,
-                    code.co_lnotab, (), ())
+                    '<Expression %s>' % (repr(source).replace("'", '"') or '?'),
+                    lineno, code.co_lnotab, (), ())
 
 def _lookup_name(data, name, locals_=None):
     val = None
Copyright (C) 2012-2017 Edgewall Software