def xhtml_escape(value):
"""Escapes a string so it is valid within XML or XHTML."""
- return xml.sax.saxutils.escape(value, {'"': """})
+ return xml.sax.saxutils.escape(_unicode(value), {'"': """})
def xhtml_unescape(value):
import tornado.escape
import unittest
+from tornado.escape import utf8, xhtml_escape, xhtml_unescape
+from tornado.util import b
+
linkify_tests = [
# (input, linkify_kwargs, expected_output)
linked = tornado.escape.linkify(text, **kwargs)
self.assertEqual(linked, html)
+ def test_xhtml_escape(self):
+ tests = [
+ ("<foo>", "<foo>"),
+ (u"<foo>", u"<foo>"),
+ (b("<foo>"), b("<foo>")),
+
+ ("<>&\"", "<>&""),
+ ("&", "&amp;"),
+ ]
+ for unescaped, escaped in tests:
+ self.assertEqual(utf8(xhtml_escape(unescaped)), utf8(escaped))
+ self.assertEqual(utf8(unescaped), utf8(xhtml_unescape(escaped)))