Mercurial > hg
changeset 23715:eee55c09010a
namespaces: add a namespace object
Currently, we use a dictionary object to store the namespace properties. This
is python so let's use an object. This will allow us to be more flexible in our
method signatures in the future.
author | Sean Farley <sean.michael.farley@gmail.com> |
---|---|
date | Fri, 19 Dec 2014 17:00:28 -0800 |
parents | e3a0e7e21f54 |
children | f4828a8f6ae9 |
files | mercurial/namespaces.py |
diffstat | 1 files changed, 38 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/namespaces.py Fri Jan 02 13:30:38 2015 +0100 +++ b/mercurial/namespaces.py Fri Dec 19 17:00:28 2014 -0800 @@ -109,3 +109,41 @@ """method that returns a (sorted) list of names in a namespace that match a given node""" return sorted(self._names[namespace]['nodemap'](repo, node)) + +class namespace(object): + """provides an interface to a namespace + + Namespaces are basically generic many-to-many mapping between some + (namespaced) names and nodes. The goal here is to control the pollution of + jamming things into tags or bookmarks (in extension-land) and to simplify + internal bits of mercurial: log output, tab completion, etc. + + More precisely, we define a mapping of names to nodes, and a mapping from + nodes to names. Each mapping returns a list. + + Furthermore, each name mapping will be passed a name to lookup which might + not be in its domain. In this case, each method should return an empty list + and not raise an error. + + This namespace object will define the properties we need: + 'name': the namespace (plural form) + '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 + 'nodemap': function that takes a node and returns a list of names + + """ + + def __init__(self, name, templatename, namemap, nodemap): + """create a namespace + + name: the namespace to be registered (in plural form) + templatename: the name to use for templating + namemap: function that inputs a node, output name(s) + nodemap: function that inputs a name, output node(s) + + """ + self.name = name + self.templatename = templatename + self.namemap = namemap + self.nodemap = nodemap