From: Ed Page Date: Sat, 19 Feb 2011 00:47:36 +0000 (-0600) Subject: Escaping messages so as to not be mistaken for HTML X-Git-Url: http://vcs.maemo.org/git/?a=commitdiff_plain;h=3134a0a9b949f04e38010aa878f0500f02caaaf2;p=gc-dialer Escaping messages so as to not be mistaken for HTML --- diff --git a/src/backends/gv_backend.py b/src/backends/gv_backend.py index e820ffb..cf7fd6a 100644 --- a/src/backends/gv_backend.py +++ b/src/backends/gv_backend.py @@ -32,6 +32,8 @@ import logging from gvoice import gvoice +from util import io as io_utils + _moduleLogger = logging.getLogger(__name__) @@ -213,7 +215,7 @@ class GVDialer(object): "high": "%s", } return " ".join( - messagePartFormat[text.accuracy] % text.text + messagePartFormat[text.accuracy] % io_utils.escape(text.text) for text in message.body ) diff --git a/src/util/io.py b/src/util/io.py index aac896d..397d144 100644 --- a/src/util/io.py +++ b/src/util/io.py @@ -8,6 +8,7 @@ import pickle import contextlib import itertools import codecs +from xml.sax import saxutils import csv try: import cStringIO as StringIO @@ -207,3 +208,23 @@ def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs): def utf_8_encoder(unicode_csv_data): for line in unicode_csv_data: yield line.encode('utf-8') + + +_UNESCAPE_ENTITIES = { + """: '"', + " ": " ", + "'": "'", +} + + +_ESCAPE_ENTITIES = dict((v, k) for (v, k) in zip(_UNESCAPE_ENTITIES.itervalues(), _UNESCAPE_ENTITIES.iterkeys())) + + +def unescape(text): + plain = saxutils.unescape(text, _UNESCAPE_ENTITIES) + return plain + + +def escape(text): + fancy = saxutils.escape(text, _ESCAPE_ENTITIES) + return fancy