Mercurial > kallithea
changeset 5193:82198c193c11
helpers: improve html_escape
Repeated string replace is faster than iterating over each character in Python
and doing a dict lookup.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Fri, 19 Jun 2015 18:00:42 +0200 |
parents | 4c965154a28d |
children | d60f54b3eeb3 |
files | kallithea/lib/helpers.py |
diffstat | 1 files changed, 13 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/helpers.py Fri Jun 19 00:54:07 2015 +0200 +++ b/kallithea/lib/helpers.py Fri Jun 19 18:00:42 2015 +0200 @@ -89,18 +89,17 @@ parts = url('home', qualified=True).split('://', 1) return parts[1].split('/', 1)[0] -def html_escape(text, html_escape_table=None): - """Produce entities within text.""" - if not html_escape_table: - html_escape_table = { - "&": "&", - '"': """, - "'": "'", - ">": ">", - "<": "<", - } - return "".join(html_escape_table.get(c, c) for c in text) - +def html_escape(text): + """Return string with all html escaped. + This is also safe for javascript in html but not necessarily correct. + """ + return (text + .replace('&', '&') + .replace(">", ">") + .replace("<", "<") + .replace('"', """) + .replace("'", "'") + ) def shorter(text, size=20): postfix = '...' @@ -1320,11 +1319,10 @@ :param repository: :param link_: changeset link """ - def escaper(string): - return string.replace('<', '<').replace('>', '>') + newtext = html_escape(text_) # urlify changesets - extract revisions and make link out of them - newtext = urlify_changesets(escaper(text_), repository) + newtext = urlify_changesets(newtext, repository) # extract http/https links and make them real urls newtext = urlify_text(newtext, safe=False)