Escaping messages so as to not be mistaken for HTML
authorEd Page <eopage@byu.net>
Sat, 19 Feb 2011 00:47:36 +0000 (18:47 -0600)
committerEd Page <eopage@byu.net>
Sat, 19 Feb 2011 00:47:36 +0000 (18:47 -0600)
src/backends/gv_backend.py
src/util/io.py

index e820ffb..cf7fd6a 100644 (file)
@@ -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": "<b>%s</b>",
                }
                return " ".join(
-                       messagePartFormat[text.accuracy] % text.text
+                       messagePartFormat[text.accuracy] % io_utils.escape(text.text)
                        for text in message.body
                )
 
index aac896d..397d144 100644 (file)
@@ -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 = {
+ "&quot;": '"',
+ "&nbsp;": " ",
+ "&#39;": "'",
+}
+
+
+_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