templatefilters: add dirname() filter
authorYuya Nishihara <yuya@tcha.org>
Sun, 07 Jan 2018 12:09:33 +0900
changeset 36246 9ee10b3284da
parent 36245 c6ce479f7a28
child 36247 48a6b1a22ccf
templatefilters: add dirname() filter This is different from stripdir() in that the last component is always removed.
mercurial/templatefilters.py
tests/test-command-template.t
--- a/mercurial/templatefilters.py	Sun Jan 07 11:21:25 2018 +0900
+++ b/mercurial/templatefilters.py	Sun Jan 07 12:09:33 2018 +0900
@@ -100,6 +100,13 @@
     """List or text. Returns the length as an integer."""
     return len(i)
 
+@templatefilter('dirname')
+def dirname(path):
+    """Any text. Treats the text as a path, and strips the last
+    component of the path after splitting by the path separator.
+    """
+    return os.path.dirname(path)
+
 @templatefilter('domain')
 def domain(author):
     """Any text. Finds the first string that looks like an email
--- a/tests/test-command-template.t	Sun Jan 07 11:21:25 2018 +0900
+++ b/tests/test-command-template.t	Sun Jan 07 12:09:33 2018 +0900
@@ -2232,6 +2232,10 @@
 
   $ hg debugtemplate '{"foo/bar"|basename}|{"foo/"|basename}|{"foo"|basename}|\n'
   bar||foo|
+  $ hg debugtemplate '{"foo/bar"|dirname}|{"foo/"|dirname}|{"foo"|dirname}|\n'
+  foo|foo||
+  $ hg debugtemplate '{"foo/bar"|stripdir}|{"foo/"|stripdir}|{"foo"|stripdir}|\n'
+  foo|foo|foo|
 
 Add a dummy commit to make up for the instability of the above: