# HG changeset patch # User Mads Kiilerich # Date 2015-06-19 18:00:42 # Node ID 82198c193c114b99fc964b94c87bc7a18db3ff88 # Parent 4c965154a28d844c0a1970688083c85c3cd70d78 helpers: improve html_escape Repeated string replace is faster than iterating over each character in Python and doing a dict lookup. diff --git a/kallithea/lib/helpers.py b/kallithea/lib/helpers.py --- a/kallithea/lib/helpers.py +++ b/kallithea/lib/helpers.py @@ -89,18 +89,17 @@ def canonical_hostname(): 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 @@ def urlify_commit(text_, repository, lin :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)