[PATCH 04 of 10] templatekw: switch namespace template keywords to new API

Yuya Nishihara yuya at tcha.org
Thu Mar 1 20:51:54 EST 2018


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1519552371 -32400
#      Sun Feb 25 18:52:51 2018 +0900
# Node ID 5600b9bc3e406a1523b81688fded42b090defa0d
# Parent  00b4baafd47b4fb77c7946ccadefb69bc1525e41
templatekw: switch namespace template keywords to new API

diff --git a/mercurial/namespaces.py b/mercurial/namespaces.py
--- a/mercurial/namespaces.py
+++ b/mercurial/namespaces.py
@@ -89,9 +89,9 @@ class namespaces(object):
         # we only generate a template keyword if one does not already exist
         if namespace.name not in templatekw.keywords:
             templatekeyword = registrar.templatekeyword(templatekw.keywords)
-            @templatekeyword(namespace.name)
-            def generatekw(**args):
-                return templatekw.shownames(namespace.name, **args)
+            @templatekeyword(namespace.name, requires={'repo', 'ctx', 'templ'})
+            def generatekw(context, mapping):
+                return templatekw.shownames(context, mapping, namespace.name)
 
     def singlenode(self, repo, name):
         """
diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
--- a/mercurial/templatekw.py
+++ b/mercurial/templatekw.py
@@ -674,22 +674,22 @@ def showobsfate(**args):
 
     return showlist("fate", values, args)
 
-def shownames(namespace, **args):
+def shownames(context, mapping, namespace):
     """helper method to generate a template keyword for a namespace"""
-    args = pycompat.byteskwargs(args)
-    ctx = args['ctx']
-    repo = ctx.repo()
+    repo = context.resource(mapping, 'repo')
+    ctx = context.resource(mapping, 'ctx')
     ns = repo.names[namespace]
     names = ns.names(repo, ctx.node())
-    return showlist(ns.templatename, names, args, plural=namespace)
+    return compatlist(context, mapping, ns.templatename, names,
+                      plural=namespace)
 
- at templatekeyword('namespaces')
-def shownamespaces(**args):
+ at templatekeyword('namespaces', requires={'repo', 'ctx', 'templ'})
+def shownamespaces(context, mapping):
     """Dict of lists. Names attached to this changeset per
     namespace."""
-    args = pycompat.byteskwargs(args)
-    ctx = args['ctx']
-    repo = ctx.repo()
+    repo = context.resource(mapping, 'repo')
+    ctx = context.resource(mapping, 'ctx')
+    templ = context.resource(mapping, 'templ')
 
     namespaces = util.sortdict()
     def makensmapfn(ns):
@@ -698,10 +698,10 @@ def shownamespaces(**args):
 
     for k, ns in repo.names.iteritems():
         names = ns.names(repo, ctx.node())
-        f = _showlist('name', names, args['templ'], args)
+        f = _showlist('name', names, templ, mapping)
         namespaces[k] = _hybrid(f, names, makensmapfn(ns), pycompat.identity)
 
-    f = _showlist('namespace', list(namespaces), args['templ'], args)
+    f = _showlist('namespace', list(namespaces), templ, mapping)
 
     def makemap(ns):
         return {
@@ -931,10 +931,10 @@ def showsubrepos(context, mapping):
 # don't remove "showtags" definition, even though namespaces will put
 # a helper function for "tags" keyword into "keywords" map automatically,
 # because online help text is built without namespaces initialization
- at templatekeyword('tags')
-def showtags(**args):
+ at templatekeyword('tags', requires={'repo', 'ctx', 'templ'})
+def showtags(context, mapping):
     """List of strings. Any tags associated with the changeset."""
-    return shownames('tags', **args)
+    return shownames(context, mapping, 'tags')
 
 @templatekeyword('termwidth', requires={'ui'})
 def showtermwidth(context, mapping):


More information about the Mercurial-devel mailing list