Message7025

Author tonfa
Recipients abuehl, djc, jwwalker
Date 2008-09-09.16:48:00
Content
It should be split in 2 patches (one to reorder logically the filter table, the
other to stringify the formatting filters).

diff --git a/mercurial/templatefilters.py b/mercurial/templatefilters.py
--- a/mercurial/templatefilters.py
+++ b/mercurial/templatefilters.py
@@ -152,33 +152,48 @@
     else:
         raise TypeError('cannot encode type %s' % obj.__class__.__name__)
 
+def stringifyfn(fn):
+    '''expand a string before it is passed to a filter.'''
+    return lambda x: fn(templater.stringify(x))
+
 filters = {
-    "addbreaks": nl2br,
-    "basename": os.path.basename,
+    # dates
     "age": age,
     "date": lambda x: util.datestr(x),
-    "domain": domain,
-    "email": util.email,
-    "escape": lambda x: cgi.escape(x, True),
-    "fill68": lambda x: fill(x, width=68),
-    "fill76": lambda x: fill(x, width=76),
-    "firstline": firstline,
-    "tabindent": lambda x: indent(x, '\t'),
     "hgdate": lambda x: "%d %d" % x,
     "isodate": lambda x: util.datestr(x, '%Y-%m-%d %H:%M %1%2'),
     "isodatesec": lambda x: util.datestr(x, '%Y-%m-%d %H:%M:%S %1%2'),
-    "obfuscate": obfuscate,
-    "permissions": permissions,
-    "person": person,
     "rfc822date": lambda x: util.datestr(x, "%a, %d %b %Y %H:%M:%S %1%2"),
     "rfc3339date": lambda x: util.datestr(x, "%Y-%m-%dT%H:%M:%S%1:%2"),
-    "short": lambda x: x[:12],
     "shortdate": util.shortdate,
+
+    # string formatting
+    "addbreaks": stringifyfn(nl2br),
+    "escape": stringifyfn(lambda x: cgi.escape(x, True)),
+    "fill68": stringifyfn(lambda x: fill(x, width=68)),
+    "fill76": stringifyfn(lambda x: fill(x, width=76)),
+    "firstline": stringifyfn(firstline),
     "stringify": templater.stringify,
-    "strip": lambda x: x.strip(),
-    "urlescape": lambda x: urllib.quote(x),
-    "user": lambda x: util.shortuser(x),
-    "stringescape": lambda x: x.encode('string_escape'),
-    "xmlescape": xmlescape,
+    "strip": stringifyfn(lambda x: x.strip()),
+    "tabindent": stringifyfn(lambda x: indent(x, '\t')),
+
+    # escaping / obfuscating
+    "obfuscate": stringifyfn(obfuscate),
+    "urlescape": stringifyfn(lambda x: urllib.quote(x)),
+    "stringescape": stringifyfn(lambda x: x.encode('string_escape')),
+    "xmlescape": stringifyfn(xmlescape),
+
+    # cset extraction
+    "domain": stringifyfn(domain),
+    "email": stringifyfn(util.email),
+    "permissions": permissions,
+    "person": stringifyfn(person),
+    "short": stringifyfn(lambda x: x[:12]),
+    "user": stringifyfn(lambda x: util.shortuser(x)),
+
+    # filenames
+    "basename": stringifyfn(os.path.basename),
+
+    # serialization
     "json": json,
 }
History
Date User Action Args
2008-09-09 16:48:01tonfasetrecipients: + djc, abuehl, jwwalker
2008-09-09 16:48:01tonfasetmessageid: <1220978881.61.0.667101831598.issue1164@selenic.com>
2008-09-09 16:48:01tonfalinkissue1164 messages
2008-09-09 16:48:00tonfacreate