diff --git a/matrix/colors.py b/matrix/colors.py index 247c8f0..fc6d3bb 100644 --- a/matrix/colors.py +++ b/matrix/colors.py @@ -32,6 +32,7 @@ try: except ImportError: from html.parser import HTMLParser +import html from html.entities import name2codepoint FormattedString = namedtuple('FormattedString', ['text', 'attributes']) @@ -316,6 +317,17 @@ class MatrixHtmlParser(HTMLParser): self.substrings = [] # type: List[FormattedString] self.attributes = DEFAULT_ATRIBUTES.copy() + def unescape(self, text): + """Shim to unescape HTML in both Python 2 and 3. + + The instance method was deprecated in Python 3 and html.unescape + doesn't exist in Python 2 so this is needed. + """ + try: + return html.unescape(text) + except AttributeError: + return HTMLParser.unescape(self, text) + def feed(self, text): text = self.unescape(text) return HTMLParser.feed(self, text)