exthelper: simplify the ability to register templates
authorMatt Harbison <matt_harbison@yahoo.com>
Thu, 27 Dec 2018 21:55:22 -0500
changeset 4329 798298fda3be
parent 4328 392f1a6a0763
child 4330 9d2d0ebc6456
exthelper: simplify the ability to register templates Same mechanism as revsets earlier in this series.
hgext3rd/evolve/__init__.py
hgext3rd/evolve/exthelper.py
hgext3rd/evolve/templatekw.py
--- a/hgext3rd/evolve/__init__.py	Thu Dec 27 21:26:17 2018 -0500
+++ b/hgext3rd/evolve/__init__.py	Thu Dec 27 21:55:22 2018 -0500
@@ -370,6 +370,7 @@
 cmdtable = eh.cmdtable
 configtable = eh.configtable
 revsetpredicate = eh.revsetpredicate
+templatekeyword = eh.templatekeyword
 
 # Configuration
 eh.configitem('experimental', 'evolutioncommands', [])
--- a/hgext3rd/evolve/exthelper.py	Thu Dec 27 21:26:17 2018 -0500
+++ b/hgext3rd/evolve/exthelper.py	Thu Dec 27 21:55:22 2018 -0500
@@ -15,7 +15,6 @@
     extensions,
     fileset as filesetmod,
     registrar,
-    templatekw as templatekwmod,
 )
 
 class exthelper(object):
@@ -33,7 +32,6 @@
         self._extcallables = []
         self._repocallables = []
         self._filesetsymbols = []
-        self._templatekws = []
         self._commandwrappers = []
         self._extcommandwrappers = []
         self._functionwrappers = []
@@ -52,6 +50,7 @@
         self.configtable = {}
         self.configitem = registrar.configitem(self.configtable)
         self.revsetpredicate = registrar.revsetpredicate()
+        self.templatekeyword = registrar.templatekeyword()
 
     def merge(self, other):
         self._uicallables.extend(other._uicallables)
@@ -60,7 +59,7 @@
         self._repocallables.extend(other._repocallables)
         self.revsetpredicate._table.update(other.revsetpredicate._table)
         self._filesetsymbols.extend(other._filesetsymbols)
-        self._templatekws.extend(other._templatekws)
+        self.templatekeyword._table.update(other.templatekeyword._table)
         self._commandwrappers.extend(other._commandwrappers)
         self._extcommandwrappers.extend(other._extcommandwrappers)
         self._functionwrappers.extend(other._functionwrappers)
@@ -132,14 +131,6 @@
         # TODO: Figure out the calling extension name
         filesetmod.loadpredicate(ui, 'exthelper', filesetpredicate)
 
-        templatekeyword = registrar.templatekeyword()
-        for name, kw, requires in self._templatekws:
-            if requires is not None:
-                templatekeyword(name, requires=requires)(kw)
-            else:
-                templatekeyword(name)(kw)
-        templatekwmod.loadkeyword(ui, 'evolve', templatekeyword)
-
         for ext, command, wrapper, opts in self._extcommandwrappers:
             if ext not in knownexts:
                 try:
@@ -234,23 +225,6 @@
             return symbol
         return dec
 
-    def templatekw(self, keywordname, requires=None):
-        """Decorated function is a template keyword
-
-        The name of the keyword must be given as the decorator argument.
-        The symbol is added during `extsetup`.
-
-        example::
-
-            @eh.templatekw('babar')
-            def kwbabar(ctx):
-                return 'babar'
-        """
-        def dec(keyword):
-            self._templatekws.append((keywordname, keyword, requires))
-            return keyword
-        return dec
-
     def wrapcommand(self, command, extension=None, opts=None):
         """Decorated function is a command wrapper
 
--- a/hgext3rd/evolve/templatekw.py	Thu Dec 27 21:26:17 2018 -0500
+++ b/hgext3rd/evolve/templatekw.py	Thu Dec 27 21:55:22 2018 -0500
@@ -24,14 +24,14 @@
 ### template keywords
 
 if util.safehasattr(templatekw, 'compatlist'):
-    @eh.templatekw('troubles', requires=set(['ctx', 'templ']))
+    @eh.templatekeyword('troubles', requires=set(['ctx', 'templ']))
     def showtroubles(context, mapping):
         ctx = context.resource(mapping, 'ctx')
         return templatekw.compatlist(context, mapping, 'trouble',
                                      ctx.instabilities(), plural='troubles')
 else:
     # older template API in hg < 4.6
-    @eh.templatekw('troubles')
+    @eh.templatekeyword('troubles')
     def showtroubles(**args):
         """List of strings. Evolution troubles affecting the changeset
         (zero or more of "unstable", "divergent" or "bumped")."""
@@ -175,7 +175,7 @@
     return "\n".join(lines)
 
 if not util.safehasattr(templatekw, 'obsfateverb'): # <= hg-4.5
-    @eh.templatekw("obsfatedata")
+    @eh.templatekeyword("obsfatedata")
     def showobsfatedata(repo, ctx, **args):
         # Get the needed obsfate data
         values = obsfatedata(repo, ctx)