mercurial/formatter.py
changeset 39600 109b2c2d9942
parent 39599 ee1e74ee037c
child 39601 990a0b071ea5
equal deleted inserted replaced
39599:ee1e74ee037c 39600:109b2c2d9942
   552             'repo': repo,
   552             'repo': repo,
   553             'ui': ui,
   553             'ui': ui,
   554         }
   554         }
   555 
   555 
   556     def availablekeys(self, mapping):
   556     def availablekeys(self, mapping):
   557         return {k for k, g in self._gettermap.iteritems()
   557         return {k for k in self.knownkeys()
   558                 if g(self, mapping, k) is not None}
   558                 if self._getsome(mapping, k) is not None}
   559 
   559 
   560     def knownkeys(self):
   560     def knownkeys(self):
   561         return self._knownkeys
   561         return {'cache', 'ctx', 'fctx', 'repo', 'revcache', 'ui'}
   562 
   562 
   563     def lookup(self, mapping, key):
   563     def lookup(self, mapping, key):
   564         get = self._gettermap.get(key)
   564         if key not in self.knownkeys():
   565         if not get:
       
   566             return None
   565             return None
   567         return get(self, mapping, key)
   566         return self._getsome(mapping, key)
   568 
   567 
   569     def populatemap(self, context, origmapping, newmapping):
   568     def populatemap(self, context, origmapping, newmapping):
   570         mapping = {}
   569         mapping = {}
   571         if self._hasctx(newmapping):
   570         if self._hasctx(newmapping):
   572             mapping['revcache'] = {}  # per-ctx cache
   571             mapping['revcache'] = {}  # per-ctx cache
   582             return v
   581             return v
   583         return self._resmap.get(key)
   582         return self._resmap.get(key)
   584 
   583 
   585     def _hasctx(self, mapping):
   584     def _hasctx(self, mapping):
   586         return 'ctx' in mapping
   585         return 'ctx' in mapping
   587 
       
   588     _gettermap = {
       
   589         'cache': _getsome,
       
   590         'ctx': _getsome,
       
   591         'fctx': _getsome,
       
   592         'repo': _getsome,
       
   593         'revcache': _getsome,
       
   594         'ui': _getsome,
       
   595     }
       
   596     _knownkeys = set(_gettermap.keys())
       
   597 
   586 
   598 def formatter(ui, out, topic, opts):
   587 def formatter(ui, out, topic, opts):
   599     template = opts.get("template", "")
   588     template = opts.get("template", "")
   600     if template == "json":
   589     if template == "json":
   601         return jsonformatter(ui, out, topic, opts)
   590         return jsonformatter(ui, out, topic, opts)