diff --git a/version_information/version_information.py b/version_information/version_information.py
index 17efeb6..9f3d57f 100644
--- a/version_information/version_information.py
+++ b/version_information/version_information.py
@@ -47,7 +47,7 @@
(the ``version`` field from ``setup.py``).
"""
-import cgi
+import html
import json
import sys
import time
@@ -120,22 +120,40 @@ def _repr_json_(self):
else:
return json.dumps(obj)
+ @staticmethod
+ def _htmltable_escape(str_):
+ CHARS = {
+ '&': r'\&',
+ '%': r'\%',
+ '$': r'\$',
+ '#': r'\#',
+ '_': r'\_',
+ '{': r'\letteropenbrace{}',
+ '}': r'\letterclosebrace{}',
+ '~': r'\lettertilde{}',
+ '^': r'\letterhat{}',
+ '\\': r'\letterbackslash{}',
+ '>': r'\textgreater',
+ '<': r'\textless',
+ }
+ return u"".join([CHARS.get(c, c) for c in str_])
+
def _repr_html_(self):
- html = "
"
- html += "Software | Version |
"
+ html_table = ""
+ html_table += "Software | Version |
"
for name, version in self.packages:
- _version = cgi.escape(version)
- html += "%s | %s |
" % (name, _version)
+ _version = self._htmltable_escape(version)
+ html_table += "%s | %s |
" % (name, _version)
try:
- html += "%s |
" % time.strftime(timefmt)
+ html_table += "%s |
" % time.strftime(timefmt)
except:
- html += "%s |
" % \
+ html_table += "%s |
" % \
time.strftime(timefmt).decode(_date_format_encoding())
- html += "
"
+ html_table += "
"
- return html
+ return html_table
@staticmethod
def _latex_escape(str_):