mercurial/namespaces.py
changeset 23553 7cebb6a8c75f
child 23554 75f9643cab1b
equal deleted inserted replaced
23552:72319005f5fb 23553:7cebb6a8c75f
       
     1 from mercurial import util
       
     2 
       
     3 class namespaces(object):
       
     4     """
       
     5     provides an interface to register a generic many-to-many mapping between
       
     6     some (namespaced) names and nodes. The goal here is to control the
       
     7     pollution of jamming things into tags or bookmarks (in extension-land) and
       
     8     to simplify internal bits of mercurial: log output, tab completion, etc.
       
     9 
       
    10     More precisely, we define a list of names (the namespace) and  a mapping of
       
    11     names to nodes. This name mapping returns a list of nodes.
       
    12 
       
    13     Furthermore, each name mapping will be passed a name to lookup which might
       
    14     not be in its domain. In this case, each method should return an empty list
       
    15     and not raise an error.
       
    16 
       
    17     We'll have a dictionary '_names' where each key is a namespace and
       
    18     its value is a dictionary of functions:
       
    19       'namemap': function that takes a name and returns a list of nodes
       
    20     """
       
    21 
       
    22     _names_version = 0
       
    23 
       
    24     def __init__(self):
       
    25         self._names = util.sortdict()