- [bug] legacy_html_escape function, used when
Markupsafe isn't installed, was using an inline-compiled
regexp which causes major slowdowns on Python 3.3;
is now precompiled.
diff --git a/CHANGES b/CHANGES
index 46465f1..970a91b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,10 @@
0.7.3
+- [bug] legacy_html_escape function, used when
+ Markupsafe isn't installed, was using an inline-compiled
+ regexp which causes major slowdowns on Python 3.3;
+ is now precompiled.
+
- [bug] AST supporting now supports tuple-packed
function arguments inside pure-python def
or lambda expressions. [ticket:201]
diff --git a/mako/filters.py b/mako/filters.py
index 37c8fe4..b4f2684 100644
--- a/mako/filters.py
+++ b/mako/filters.py
@@ -20,10 +20,12 @@
# XXX: " is valid in HTML and XML
# ' is not valid HTML, but is valid XML
+LEGACY_HTML_ESCAPE_RE = re.compile(r'([&<"\'>])')
+
def legacy_html_escape(string):
"""legacy HTML escape for non-unicode mode."""
- return re.sub(r'([&<"\'>])', lambda m: xml_escapes[m.group()], string)
+ return LEGACY_HTML_ESCAPE_RE.sub(lambda m: xml_escapes[m.group()], string)
try:
import markupsafe