diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-04-15 12:09:42 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-04-15 12:09:42 -0400 |
commit | dc09816a4673dfd7bb2260d8d564fc6ebaae7afa (patch) | |
tree | ad752de7b3140ae06facc6d1edc0bc5ba82989ff | |
parent | c16198a494de2227e05708cb4ffac4da43dc3779 (diff) | |
download | mako-dc09816a4673dfd7bb2260d8d564fc6ebaae7afa.tar.gz |
- [bug] Fixed regression where "entity" filter wasn't
converted for py3k properly (added tests.)
[ticket:214]
-rw-r--r-- | CHANGES | 4 | ||||
-rw-r--r-- | mako/filters.py | 12 | ||||
-rw-r--r-- | test/test_filters.py | 7 |
3 files changed, 17 insertions, 6 deletions
@@ -1,4 +1,8 @@ 0.8.1 +- [bug] Fixed regression where "entity" filter wasn't + converted for py3k properly (added tests.) + [ticket:214] + - [bug] Fixed bug where mako-render script wasn't compatible with Py3k. [ticket:212] diff --git a/mako/filters.py b/mako/filters.py index 63a51c4..cf2c58b 100644 --- a/mako/filters.py +++ b/mako/filters.py @@ -26,13 +26,13 @@ xml_escapes = { def legacy_html_escape(s): """legacy HTML escape for non-unicode mode.""" - s = s.replace("&", "&") - s = s.replace(">", ">") - s = s.replace("<", "<") + s = s.replace("&", "&") + s = s.replace(">", ">") + s = s.replace("<", "<") s = s.replace('"', """) s = s.replace("'", "'") return s - + try: import markupsafe @@ -80,7 +80,7 @@ def is_ascii_str(text): class XMLEntityEscaper(object): def __init__(self, codepoint2name, name2codepoint): - self.codepoint2entity = dict([(c, '&%s;' % n) + self.codepoint2entity = dict([(c, compat.text_type('&%s;' % n)) for c, n in codepoint2name.items()]) self.name2codepoint = name2codepoint @@ -89,7 +89,7 @@ class XMLEntityEscaper(object): Only characters corresponding to a named entity are replaced. """ - return str(text).translate(self.codepoint2entity) + return compat.text_type(text).translate(self.codepoint2entity) def __escape(self, m): codepoint = ord(m.group()) diff --git a/test/test_filters.py b/test/test_filters.py index 7767409..cf292ed 100644 --- a/test/test_filters.py +++ b/test/test_filters.py @@ -39,6 +39,13 @@ class FilterTest(TemplateTest): "foo <'some bar'>" ) + def test_entity(self): + t = Template("foo ${bar | entity}") + eq_( + flatten_result(t.render(bar="<'some bar'>")), + "foo <'some bar'>" + ) + @requires_python_2 def test_quoting_non_unicode(self): t = Template(""" |