diff --git a/mercurial/namespaces.py b/mercurial/namespaces.py --- a/mercurial/namespaces.py +++ b/mercurial/namespaces.py @@ -12,26 +12,9 @@ def tolist(val): return [val] class namespaces(object): - """ - provides an interface to register a 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 list of names (the namespace), a mapping of - names to nodes, and a mapping from nodes to names. Each mapping - returns a list of nodes. + """provides an interface to register and operate on multiple namespaces. See + the namespace class below for details on the namespace object. - 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. - - 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 - 'nodemap': function that takes a node and returns a list of names """ _names_version = 0 @@ -45,30 +28,27 @@ class namespaces(object): # we need current mercurial named objects (bookmarks, tags, and # branches) to be initialized somewhere, so that place is here n = ns("bookmarks", "bookmark", - lambda repo, name: tolist(repo._bookmarks.get(name)), - lambda repo, name: repo.nodebookmarks(name)) + lambda repo, name: tolist(repo._bookmarks.get(name)), + lambda repo, name: repo.nodebookmarks(name)) self.addnamespace(n) n = ns("tags", "tag", - lambda repo, name: tolist(repo._tagscache.tags.get(name)), - lambda repo, name: repo.nodetags(name)) + lambda repo, name: tolist(repo._tagscache.tags.get(name)), + lambda repo, name: repo.nodetags(name)) self.addnamespace(n) n = ns("branches", "branch", - lambda repo, name: tolist(repo.branchtip(name)), - lambda repo, node: [repo[node].branch()]) + lambda repo, name: tolist(repo.branchtip(name)), + lambda repo, node: [repo[node].branch()]) self.addnamespace(n) def addnamespace(self, namespace, order=None): - """ - register a namespace + """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) - nodemap: function that inputs a name, output node(s) order: optional argument to specify the order of namespaces (e.g. 'branches' should be listed before 'bookmarks') + """ if order is not None: self._names.insert(order, namespace.name, namespace)