# HG changeset patch # User Augie Fackler # Date 1507964246 14400 # Node ID 2976cf87a60a4233868a512a1e4fcfc2105fa915 # Parent 56bb07a0b75c8c5de1bf8ac533eab65f7256f8e3 url: add cgi.escape equivalent for bytestrings This seems like a sensible enough place to put it. Differential Revision: https://phab.mercurial-scm.org/D1066 diff -r 56bb07a0b75c -r 2976cf87a60a mercurial/url.py --- a/mercurial/url.py Thu Oct 05 14:15:05 2017 -0400 +++ b/mercurial/url.py Sat Oct 14 02:57:26 2017 -0400 @@ -30,6 +30,21 @@ urlerr = util.urlerr urlreq = util.urlreq +def escape(s, quote=None): + '''Replace special characters "&", "<" and ">" to HTML-safe sequences. + If the optional flag quote is true, the quotation mark character (") + is also translated. + + This is the same as cgi.escape in Python, but always operates on + bytes, whereas cgi.escape in Python 3 only works on unicodes. + ''' + s = s.replace(b"&", b"&") + s = s.replace(b"<", b"<") + s = s.replace(b">", b">") + if quote: + s = s.replace(b'"', b""") + return s + class passwordmgr(object): def __init__(self, ui, passwddb): self.ui = ui