[PATCH 1 of 7 V2] namespaces: add template name of a namespace

Sean Farley sean.michael.farley at gmail.com
Thu Dec 18 21:10:45 UTC 2014


# HG changeset patch
# User Sean Farley <sean.michael.farley at gmail.com>
# Date 1418630992 28800
#      Mon Dec 15 00:09:52 2014 -0800
# Node ID 5b61f147d886111e0e783b01342e864af67e2af7
# Parent  39cead85fd58ae6693592074656b284ed736d9bc
namespaces: add template name of a namespace

The template name property will be used in upcoming patches to automatically
generate a template keyword. For example, given a namespace called 'babars', we
will automatically generate a template keyword 'babar' such that we can use it
in the following way,

$ hg log -r . -T '{babars % "King: {babar}\n"}'

diff --git a/mercurial/namespaces.py b/mercurial/namespaces.py
--- a/mercurial/namespaces.py
+++ b/mercurial/namespaces.py
@@ -24,10 +24,12 @@ class namespaces(object):
     not be in its domain. In this case, each method should return an empty list
     and not raise an error.
 
     We'll have a dictionary '_names' where each key is a namespace and
     its value is a dictionary of functions:
+      'templatename': name to use for templating (usually the singular form
+                      of the plural namespace name)
       'namemap': function that takes a name and returns a list of nodes
     """
 
     _names_version = 0
 
@@ -36,29 +38,31 @@ class namespaces(object):
 
         addns = self.addnamespace
 
         # we need current mercurial named objects (bookmarks, tags, and
         # branches) to be initialized somewhere, so that place is here
-        addns("bookmarks",
+        addns("bookmarks", "bookmark",
               lambda repo, name: tolist(repo._bookmarks.get(name)))
 
-        addns("tags",
+        addns("tags", "tag",
               lambda repo, name: tolist(repo._tagscache.tags.get(name)))
 
-        addns("branches",
+        addns("branches", "branch",
               lambda repo, name: tolist(repo.branchtip(name)))
 
-    def addnamespace(self, namespace, namemap, order=None):
+    def addnamespace(self, namespace, templatename, namemap, order=None):
         """
         register a namespace
 
         namespace: the name to be registered (in plural form)
+        templatename: the name to use for templating
         namemap: function that inputs a node, output name(s)
         order: optional argument to specify the order of namespaces
                (e.g. 'branches' should be listed before 'bookmarks')
         """
-        val = {'namemap': namemap}
+        val = {'templatename': templatename,
+               'namemap': namemap}
         if order is not None:
             self._names.insert(order, namespace, val)
         else:
             self._names[namespace] = val
 


More information about the Mercurial-devel mailing list