mercurial/templateutil.py
changeset 37276 b4630e332a99
parent 37275 8c84dc8264dc
child 37277 9e8128e84326
equal deleted inserted replaced
37275:8c84dc8264dc 37276:b4630e332a99
   111     value. Use unwrapvalue(), unwrapastype(), or unwraphybrid() to obtain
   111     value. Use unwrapvalue(), unwrapastype(), or unwraphybrid() to obtain
   112     the inner object.
   112     the inner object.
   113     """
   113     """
   114 
   114 
   115     def __init__(self, gen, key, value, makemap):
   115     def __init__(self, gen, key, value, makemap):
   116         if gen is not None:
   116         self._gen = gen  # generator or function returning generator
   117             self._gen = gen  # generator or function returning generator
       
   118         self._key = key
   117         self._key = key
   119         self._value = value  # may be generator of strings
   118         self._value = value  # may be generator of strings
   120         self._makemap = makemap
   119         self._makemap = makemap
   121 
   120 
   122     def _gen(self):
       
   123         yield pycompat.bytestr(self._value)
       
   124 
       
   125     def tomap(self):
   121     def tomap(self):
   126         return self._makemap(self._key)
   122         return self._makemap(self._key)
   127 
   123 
   128     def itermaps(self):
   124     def itermaps(self):
   129         yield self.tomap()
   125         yield self.tomap()
   130 
   126 
   131     def show(self, context, mapping):
   127     def show(self, context, mapping):
   132         # TODO: switch gen to (context, mapping) API?
   128         # TODO: switch gen to (context, mapping) API?
   133         gen = self._gen
   129         gen = self._gen
       
   130         if gen is None:
       
   131             return pycompat.bytestr(self._value)
   134         if callable(gen):
   132         if callable(gen):
   135             return gen()
   133             return gen()
   136         return gen
   134         return gen
   137 
   135 
   138 def hybriddict(data, key='key', value='value', fmt=None, gen=None):
   136 def hybriddict(data, key='key', value='value', fmt=None, gen=None):