diff mercurial/templatekw.py @ 34541:0a0a72c043ac

templatekw: allow accessing to nested namespace item by its template name Since we have the dot operator, it makes more sense to write {namespaces.tags % "{tag}"} instead of {namespaces.tags % "{name}"}
author Yuya Nishihara <yuya@tcha.org>
date Sat, 30 Sep 2017 08:57:50 +0100
parents 1c7c4445686f
children ee0d74083a22
line wrap: on
line diff
--- a/mercurial/templatekw.py	Sat Sep 30 08:50:24 2017 +0100
+++ b/mercurial/templatekw.py	Sat Sep 30 08:57:50 2017 +0100
@@ -618,9 +618,14 @@
     repo = ctx.repo()
 
     namespaces = util.sortdict()
+    def makensmapfn(ns):
+        # 'name' for iterating over namespaces, templatename for local reference
+        return lambda v: {'name': v, ns.templatename: v}
 
     for k, ns in repo.names.iteritems():
-        namespaces[k] = showlist('name', ns.names(repo, ctx.node()), args)
+        names = ns.names(repo, ctx.node())
+        f = _showlist('name', names, args)
+        namespaces[k] = _hybrid(f, names, makensmapfn(ns), pycompat.identity)
 
     f = _showlist('namespace', list(namespaces), args)