changeset 19330:867b9957d895

templater: add strip function with chars as an extra argument This allows specifying characters to strip, like the Python strip function.
author Alexander Plavin <me@aplavin.ru>
date Tue, 25 Jun 2013 21:02:22 +0400
parents 84dc9669bd71
children 666aa90258e6
files mercurial/help/templates.txt mercurial/templater.py tests/test-command-template.t
diffstat 3 files changed, 41 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/help/templates.txt	Mon Jun 24 14:02:01 2013 -0400
+++ b/mercurial/help/templates.txt	Tue Jun 25 21:02:22 2013 +0400
@@ -62,6 +62,8 @@
 
 - rstdoc(text, style)
 
+- strip(text, chars)
+
 Also, for any expression that returns a list, there is a list operator:
 
 - expr % "{template}"
--- a/mercurial/templater.py	Mon Jun 24 14:02:01 2013 -0400
+++ b/mercurial/templater.py	Tue Jun 25 21:02:22 2013 +0400
@@ -333,6 +333,16 @@
         return util.datestr(date, fmt)
     return util.datestr(date)
 
+def strip(context, mapping, args):
+    if not (1 <= len(args) <= 2):
+        raise error.ParseError(_("strip expects one or two arguments"))
+
+    text = args[0][0](context, mapping, args[0][1])
+    if len(args) == 2:
+        chars = args[1][0](context, mapping, args[1][1])
+        return text.strip(chars)
+    return text.strip()
+
 methods = {
     "string": lambda e, c: (runstring, e[1]),
     "symbol": lambda e, c: (runsymbol, e[1]),
@@ -353,6 +363,7 @@
     "sub": sub,
     "fill": fill,
     "date": date,
+    "strip": strip,
 }
 
 # template engine
--- a/tests/test-command-template.t	Mon Jun 24 14:02:01 2013 -0400
+++ b/tests/test-command-template.t	Tue Jun 25 21:02:22 2013 +0400
@@ -1536,3 +1536,31 @@
 
   $ hg log -R latesttag -r 10 --template '{sub("[0-9]", "x", "{rev}")}\n'
   xx
+
+Test the strip function with chars specified:
+
+  $ hg log -R latesttag --template '{desc}\n'
+  at3
+  t5
+  t3
+  t2
+  t1
+  merge
+  h2e
+  h2d
+  h1c
+  b
+  a
+
+  $ hg log -R latesttag --template '{strip(desc, "te")}\n'
+  at3
+  5
+  3
+  2
+  1
+  merg
+  h2
+  h2d
+  h1c
+  b
+  a