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 += "" + html_table = "
SoftwareVersion
" + html_table += "" for name, version in self.packages: - _version = cgi.escape(version) - html += "" % (name, _version) + _version = self._htmltable_escape(version) + html_table += "" % (name, _version) try: - html += "" % time.strftime(timefmt) + html_table += "" % time.strftime(timefmt) except: - html += "" % \ + html_table += "" % \ time.strftime(timefmt).decode(_date_format_encoding()) - html += "
SoftwareVersion
%s%s
%s%s
%s
%s
%s
%s
" + html_table += "" - return html + return html_table @staticmethod def _latex_escape(str_):