templater: add strip function with chars as an extra argument
This allows specifying characters to strip, like the Python strip function.
--- 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