##// END OF EJS Templates
templates: introduce revescape filter for escaping symbolic revisions...
av6 -
r25778:3a334127 default
parent child Browse files
Show More
@@ -6,10 +6,11 b''
6 6 # This software may be used and distributed according to the terms of the
7 7 # GNU General Public License version 2 or any later version.
8 8
9 import os, copy, urllib
9 import os, copy
10 10 from mercurial import match, patch, error, ui, util, pathutil, context
11 11 from mercurial.i18n import _
12 12 from mercurial.node import hex, nullid, short
13 from mercurial.templatefilters import revescape
13 14 from common import ErrorResponse, paritygen
14 15 from common import HTTP_NOT_FOUND
15 16 import difflib
@@ -281,7 +282,7 b' def changelistentry(web, ctx, tmpl):'
281 282
282 283 def symrevorshortnode(req, ctx):
283 284 if 'node' in req.form:
284 return urllib.quote(req.form['node'][0])
285 return revescape(req.form['node'][0])
285 286 else:
286 287 return short(ctx.node())
287 288
@@ -283,6 +283,13 b' def person(author):'
283 283 f = author.find('@')
284 284 return author[:f].replace('.', ' ')
285 285
286 def revescape(text):
287 """:revescape: Any text. Escapes all "special" characters, except @.
288 Forward slashes are escaped twice to prevent web servers from prematurely
289 unescaping them. For example, "@foo bar/baz" becomes "@foo%20bar%252Fbaz".
290 """
291 return urllib.quote(text, safe='/@').replace('/', '%252F')
292
286 293 def rfc3339date(text):
287 294 """:rfc3339date: Date. Returns a date using the Internet date format
288 295 specified in RFC 3339: "2009-08-18T13:00:13+02:00".
@@ -402,6 +409,7 b' filters = {'
402 409 "obfuscate": obfuscate,
403 410 "permissions": permissions,
404 411 "person": person,
412 "revescape": revescape,
405 413 "rfc3339date": rfc3339date,
406 414 "rfc822date": rfc822date,
407 415 "short": short,
General Comments 0
You need to be logged in to leave comments. Login now