27 lines
650 B
Python
27 lines
650 B
Python
import re
|
|
import sys
|
|
|
|
if sys.version_info > (3, 0):
|
|
def u(s):
|
|
return s
|
|
else:
|
|
def u(s):
|
|
return unicode(s)
|
|
|
|
class _escape:
|
|
def __init__(self):
|
|
self.escape = {
|
|
u('"') : u('"'), u('<') : u('<'), u('>') : u('>'),
|
|
u('&') : u('&'), u("'") : u('''),
|
|
}
|
|
self.charef_rex = re.compile(u("|").join(self.escape.keys()))
|
|
|
|
def _replacer(self, match):
|
|
return self.escape[match.group(0)]
|
|
|
|
def __call__(self, ustring):
|
|
""" xml-escape the given unicode string. """
|
|
return self.charef_rex.sub(self._replacer, ustring)
|
|
|
|
escape = _escape()
|