Mercurial > genshi > genshi-test
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