diff mercurial/templatekw.py @ 34538:ac38e889b33a

templatekw: make experimental {peerpaths} return a single-level dict (BC) This was planned as in c0d8de2724ce, "{peerpaths.default.pushurl} will be translated to peerpaths['default'].makemap()['pushurl'], which means {peerpaths} should be a single-level dict and sub-options should be makemap()-ed."
author Yuya Nishihara <yuya@tcha.org>
date Mon, 18 Sep 2017 23:31:01 +0900
parents 8c3dd5e462cc
children f30e59703d98
line wrap: on
line diff
--- a/mercurial/templatekw.py	Mon Sep 18 23:49:05 2017 +0900
+++ b/mercurial/templatekw.py	Mon Sep 18 23:31:01 2017 +0900
@@ -658,19 +658,14 @@
     """A dictionary of repository locations defined in the [paths] section
     of your configuration file. (EXPERIMENTAL)"""
     # see commands.paths() for naming of dictionary keys
-    paths = util.sortdict()
-    for k, p in sorted(repo.ui.paths.iteritems()):
-        d = util.sortdict()
-        d['url'] = p.rawloc
+    paths = repo.ui.paths
+    urls = util.sortdict((k, p.rawloc) for k, p in sorted(paths.iteritems()))
+    def makemap(k):
+        p = paths[k]
+        d = {'name': k, 'url': p.rawloc}
         d.update((o, v) for o, v in sorted(p.suboptions.iteritems()))
-        def f(d):
-            yield d['url']
-        paths[k] = hybriddict(d, gen=f(d))
-
-    # no hybriddict() since d['path'] can't be formatted as a string. perhaps
-    # hybriddict() should call templatefilters.stringify(d[value]).
-    return _hybrid(None, paths, lambda k: {'name': k, 'path': paths[k]},
-                   lambda k: '%s=%s' % (k, paths[k]['url']))
+        return d
+    return _hybrid(None, urls, makemap, lambda k: '%s=%s' % (k, urls[k]))
 
 @templatekeyword("predecessors")
 def showpredecessors(repo, ctx, **args):