templatefilters: add new stripdir filter
authorAleix Conchillo Flaque <aleix@member.fsf.org>
Fri, 24 Apr 2009 18:37:44 +0200
changeset 8158 1bef3656d9fe
parent 8157 77c5877a668c
child 8159 19f22977e635
templatefilters: add new stripdir filter Adds a new template filter for removing directory levels from a string. Examples: {foo|stripdir} -> 'foo' {foo/bar|stripdir} -> 'foo' {foo/bar/more|stripdir} -> 'foo/bar' {foo/bar/more|stripdir|stripdir} -> 'foo'
mercurial/templatefilters.py
--- a/mercurial/templatefilters.py	Fri Apr 24 18:47:15 2009 +0200
+++ b/mercurial/templatefilters.py	Fri Apr 24 18:37:44 2009 +0200
@@ -157,9 +157,18 @@
     else:
         raise TypeError('cannot encode type %s' % obj.__class__.__name__)
 
+def stripdir(text):
+    '''Treat the text as path and strip a directory level, if possible.'''
+    dir = os.path.dirname(text)
+    if dir == "":
+        return os.path.basename(text)
+    else:
+        return dir
+
 filters = {
     "addbreaks": nl2br,
     "basename": os.path.basename,
+    "stripdir": stripdir,
     "age": age,
     "date": lambda x: util.datestr(x),
     "domain": domain,