diff --git a/pystache/common.py b/pystache/common.py index fb266dd8..44ab680f 100644 --- a/pystache/common.py +++ b/pystache/common.py @@ -14,6 +14,8 @@ def _get_string_types(): # and "basestring" to Python 3's "str". if version_info < (3, ): return basestring + else: + unicode = str # The latter evaluates to "bytes" in Python 3 -- even after conversion by 2to3. return (unicode, type(u"a".encode('utf-8'))) diff --git a/pystache/parser.py b/pystache/parser.py index 9a4fba23..bd62c17b 100644 --- a/pystache/parser.py +++ b/pystache/parser.py @@ -6,13 +6,17 @@ """ import re +import sys + +if sys.version_info.major >= 3: + unicode = str from pystache import defaults from pystache.parsed import ParsedTemplate END_OF_LINE_CHARACTERS = [u'\r', u'\n'] -NON_BLANK_RE = re.compile(ur'^(.)', re.M) +NON_BLANK_RE = re.compile(u'^(.)', re.M) # TODO: add some unit tests for this. @@ -146,8 +150,9 @@ def __repr__(self): def render(self, engine, context): template = engine.resolve_partial(self.key) + # Indent before rendering. - template = re.sub(NON_BLANK_RE, self.indent + ur'\1', template) + template = re.sub(NON_BLANK_RE, self.indent + u'\\1', template) return engine.render(template, context)