[PATCH] templater: add nonempty function with an extra argument placeholder

Alexander Plavin alexander at plav.in
Mon Aug 5 16:20:03 CDT 2013


# HG changeset patch
# User Alexander Plavin <alexander at plav.in>
# Date 1372502211 -14400
#      Sat Jun 29 14:36:51 2013 +0400
# Node ID 29057a4b94c98256b13e0948bd79cb106f918ed7
# Parent  2813b5f5514c7692e74befe2fee13ee58170b8df
templater: add nonempty function with an extra argument placeholder

Behaviour without the extra argument is same as for the existing
nonempty filter.

diff -r 2813b5f5514c -r 29057a4b94c9 mercurial/help/templates.txt
--- a/mercurial/help/templates.txt	Mon Jul 22 17:07:19 2013 +0400
+++ b/mercurial/help/templates.txt	Sat Jun 29 14:36:51 2013 +0400
@@ -58,6 +58,8 @@
 
 - label(label, expr)
 
+- nonempty(text[, placeholder])
+
 - rstdoc(text, style)
 
 - strip(text[, chars])
diff -r 2813b5f5514c -r 29057a4b94c9 mercurial/templater.py
--- a/mercurial/templater.py	Mon Jul 22 17:07:19 2013 +0400
+++ b/mercurial/templater.py	Sat Jun 29 14:36:51 2013 +0400
@@ -311,6 +311,17 @@
     t = stringify(args[1][0](context, mapping, args[1][1]))
     yield runtemplate(context, mapping, compiletemplate(t, context))
 
+def nonempty(context, mapping, args):
+    if not (1 <= len(args) <= 2):
+        raise error.ParseError(_("nonempty expects one or two arguments"))
+
+    text = args[0][0](context, mapping, args[0][1])
+    if len(args) == 1:
+        placeholder = "(none)"
+    else:
+        placeholder = args[1][0](context, mapping, args[1][1])
+    return text or placeholder
+
 def rstdoc(context, mapping, args):
     if len(args) != 2:
         # i18n: "rstdoc" is a keyword
@@ -361,6 +372,7 @@
     "ifeq": ifeq,
     "join": join,
     "label": label,
+    "nonempty": nonempty,
     "rstdoc": rstdoc,
     "strip": strip,
     "sub": sub,
diff -r 2813b5f5514c -r 29057a4b94c9 tests/test-command-template.t
--- a/tests/test-command-template.t	Mon Jul 22 17:07:19 2013 +0400
+++ b/tests/test-command-template.t	Sat Jun 29 14:36:51 2013 +0400
@@ -1537,7 +1537,7 @@
   $ hg log -R latesttag -r 10 --template '{sub("[0-9]", "x", "{rev}")}\n'
   xx
 
-Test the strip function with chars specified:
+Test the strip and nonempty functions with extra arguments specified:
 
   $ hg log -R latesttag --template '{desc}\n'
   at3
@@ -1552,14 +1552,14 @@
   b
   a
 
-  $ hg log -R latesttag --template '{strip(desc, "te")}\n'
+  $ hg log -R latesttag --template '{nonempty(strip(desc, "te2"), "<was empty>")}\n'
   at3
   5
   3
-  2
+  <was empty>
   1
   merg
-  h2
+  h
   h2d
   h1c
   b


More information about the Mercurial-devel mailing list