mercurial/formatter.py
changeset 39623 34ecc0a09c76
parent 39586 b1239aeef4d9
child 39624 713085b45810
equal deleted inserted replaced
39622:20dbca581727 39623:34ecc0a09c76
   577         if self._hasnodespec(newmapping):
   577         if self._hasnodespec(newmapping):
   578             mapping['revcache'] = {}  # per-ctx cache
   578             mapping['revcache'] = {}  # per-ctx cache
   579         if self._hasnodespec(origmapping) and self._hasnodespec(newmapping):
   579         if self._hasnodespec(origmapping) and self._hasnodespec(newmapping):
   580             orignode = templateutil.runsymbol(context, origmapping, 'node')
   580             orignode = templateutil.runsymbol(context, origmapping, 'node')
   581             mapping['originalnode'] = orignode
   581             mapping['originalnode'] = orignode
   582         # put marker to override 'fctx' in mapping if any, and flag
   582         # put marker to override 'ctx'/'fctx' in mapping if any, and flag
   583         # its existence to be reported by availablekeys()
   583         # its existence to be reported by availablekeys()
       
   584         if 'ctx' not in newmapping and self._hasliteral(newmapping, 'node'):
       
   585             mapping['ctx'] = _placeholder
   584         if 'fctx' not in newmapping and self._hasliteral(newmapping, 'path'):
   586         if 'fctx' not in newmapping and self._hasliteral(newmapping, 'path'):
   585             mapping['fctx'] = _placeholder
   587             mapping['fctx'] = _placeholder
   586         return mapping
   588         return mapping
   587 
   589 
   588     def _getsome(self, mapping, key):
   590     def _getsome(self, mapping, key):
   603         return v
   605         return v
   604 
   606 
   605     def _hasnodespec(self, mapping):
   607     def _hasnodespec(self, mapping):
   606         """Test if context revision is set or unset in the given mapping"""
   608         """Test if context revision is set or unset in the given mapping"""
   607         return 'node' in mapping or 'ctx' in mapping
   609         return 'node' in mapping or 'ctx' in mapping
       
   610 
       
   611     def _loadctx(self, mapping):
       
   612         repo = self._getsome(mapping, 'repo')
       
   613         node = self._getliteral(mapping, 'node')
       
   614         if repo is None or node is None:
       
   615             return
       
   616         try:
       
   617             return repo[node]
       
   618         except error.RepoLookupError:
       
   619             return None # maybe hidden/non-existent node
   608 
   620 
   609     def _loadfctx(self, mapping):
   621     def _loadfctx(self, mapping):
   610         ctx = self._getsome(mapping, 'ctx')
   622         ctx = self._getsome(mapping, 'ctx')
   611         path = self._getliteral(mapping, 'path')
   623         path = self._getliteral(mapping, 'path')
   612         if ctx is None or path is None:
   624         if ctx is None or path is None:
   615             return ctx[path]
   627             return ctx[path]
   616         except error.LookupError:
   628         except error.LookupError:
   617             return None # maybe removed file?
   629             return None # maybe removed file?
   618 
   630 
   619     _loadermap = {
   631     _loadermap = {
       
   632         'ctx': _loadctx,
   620         'fctx': _loadfctx,
   633         'fctx': _loadfctx,
   621     }
   634     }
   622 
   635 
   623 def formatter(ui, out, topic, opts):
   636 def formatter(ui, out, topic, opts):
   624     template = opts.get("template", "")
   637     template = opts.get("template", "")