summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-04-15 12:09:42 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2013-04-15 12:09:42 -0400
commitdc09816a4673dfd7bb2260d8d564fc6ebaae7afa (patch)
treead752de7b3140ae06facc6d1edc0bc5ba82989ff
parentc16198a494de2227e05708cb4ffac4da43dc3779 (diff)
downloadmako-dc09816a4673dfd7bb2260d8d564fc6ebaae7afa.tar.gz
- [bug] Fixed regression where "entity" filter wasn't
converted for py3k properly (added tests.) [ticket:214]
-rw-r--r--CHANGES4
-rw-r--r--mako/filters.py12
-rw-r--r--test/test_filters.py7
3 files changed, 17 insertions, 6 deletions
diff --git a/CHANGES b/CHANGES
index abd1f80..e8ffb1f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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("&", "&amp;")
- s = s.replace(">", "&gt;")
- s = s.replace("<", "&lt;")
+ s = s.replace("&", "&amp;")
+ s = s.replace(">", "&gt;")
+ s = s.replace("<", "&lt;")
s = s.replace('"', "&#34;")
s = s.replace("'", "&#39;")
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 &lt;&#39;some bar&#39;&gt;"
)
+ def test_entity(self):
+ t = Template("foo ${bar | entity}")
+ eq_(
+ flatten_result(t.render(bar="<'some bar'>")),
+ "foo &lt;'some bar'&gt;"
+ )
+
@requires_python_2
def test_quoting_non_unicode(self):
t = Template("""