From 3c04f699c38bbf3a32cbcab3a9f69ffb930c8e57 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 2 Jan 2013 11:21:26 +0100 Subject: [PATCH] Force use of non-unicode constants in compiled templates. Fixes a problem with regular expression character classes and probably other things. --- src/calibre/utils/formatter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/utils/formatter.py b/src/calibre/utils/formatter.py index 0711013437..eff38203a0 100644 --- a/src/calibre/utils/formatter.py +++ b/src/calibre/utils/formatter.py @@ -294,11 +294,11 @@ class _CompileParser(_Parser): self.parent_book, self.parent_locals, *args) elif self.token_is_constant(): # String or number - v = self.token() + v = unicode(self.token()) if self.compile_text: tv = v.replace("\\", "\\\\") tv = tv.replace("'", "\\'") - self.compile_text += "\targs[%d].append('%s')\n"%(level, tv) + self.compile_text += "\targs[%d].append(unicode('%s'))\n"%(level, tv) return v else: self.error(_('expression is not function or constant'))