.. _fbf.utils.textutils: textutils ~~~~~~~~~ .. automodule:: fbf.utils.textutils :show-inheritance: :members: :undoc-members: CODE ---- :: # fbf/utils/textutils.py # # .. _fbf.utils.textutils_basic_imports: basic imports ---------------- :: import cgi import re import html.entities .. _fbf.utils.textutils_unescape_charref_function: unescape_charref function ---------------------------- :: def unescape_charref(ref): """ ask maze. """ name = ref[2:-1] base = 10 if name.startswith("x"): name = name[1:] base = 16 return chr(int(name, base)) .. _fbf.utils.textutils_replace_entities_function: replace_entities function ---------------------------- :: def replace_entities(match): """ ask maze. """ ent = match.group() if ent[1] == "#": return unescape_charref(ent) repl = html.entities.nafbfcodepoint.get(ent[1:-1]) if repl is not None: repl = chr(repl) else: repl = ent return repl .. _fbf.utils.textutils_html_unescape_function: html_unescape function ------------------------- :: def html_unescape(data): ''' unescape (numeric) HTML entities. ''' return re.sub(r"&#?[A-Za-z0-9]+?;", replace_entities, data) .. _fbf.utils.textutils_html_escape_function: html_escape function ----------------------- :: def html_escape(data): ''' escape HTML entities. ''' return cgi.escape(data)