templatefilters: add dirname() filter
This is different from stripdir() in that the last component is always
removed.
--- 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: