diff --git a/CHANGES b/CHANGES index a622408..65d54ce 100644 --- a/CHANGES +++ b/CHANGES @@ -14,6 +14,12 @@ inside of a tag element that doesn't allow them raises a CompileException instead of silently failing. + +- Added a try/except around "import markupsafe". + This to support GAE which can't run markupsafe. + [ticket:151] No idea whatsoever if the + install_requires in setup.py also breaks GAE, + couldn't get an answer on this. 0.3.4 - Now using MarkupSafe for HTML escaping, diff --git a/mako/filters.py b/mako/filters.py index ce11168..23b77e1 100644 --- a/mako/filters.py +++ b/mako/filters.py @@ -8,7 +8,6 @@ import re, urllib, htmlentitydefs, codecs from StringIO import StringIO from mako import util -import markupsafe xml_escapes = { '&' : '&', @@ -21,13 +20,18 @@ # XXX: " is valid in HTML and XML # ' is not valid HTML, but is valid XML -def html_escape(string): - return markupsafe.escape(string) - def legacy_html_escape(string): """legacy HTML escape for non-unicode mode.""" return re.sub(r'([&<"\'>])', lambda m: xml_escapes[m.group()], string) + +try: + import markupsafe + def html_escape(string): + return markupsafe.escape(string) +except ImportError: + html_escape = legacy_html_escape + def xml_escape(string): return re.sub(r'([&<"\'>])', lambda m: xml_escapes[m.group()], string)