comparison mercurial/templatekw.py @ 31923:68c910fa9ee2

templatekw: add default implementation of _hybrid.gen This is convenient for new template keyword, which doesn't need to support the legacy list hack (provided by _showlist()), but still wants to have a string representation.
author Yuya Nishihara <yuya@tcha.org>
date Wed, 12 Apr 2017 21:10:47 +0900
parents ba5b74f780d5
children 21f129354dd0
comparison
equal deleted inserted replaced
31922:0f41f1e3c75c 31923:68c910fa9ee2
30 - "{get(extras, key)}" 30 - "{get(extras, key)}"
31 - "{files|json}" 31 - "{files|json}"
32 """ 32 """
33 33
34 def __init__(self, gen, values, makemap, joinfmt): 34 def __init__(self, gen, values, makemap, joinfmt):
35 self.gen = gen 35 if gen is not None:
36 self.gen = gen
36 self._values = values 37 self._values = values
37 self._makemap = makemap 38 self._makemap = makemap
38 self.joinfmt = joinfmt 39 self.joinfmt = joinfmt
40 @util.propertycache
41 def gen(self):
42 return self._defaultgen()
43 def _defaultgen(self):
44 """Generator to stringify this as {join(self, ' ')}"""
45 for i, d in enumerate(self.itermaps()):
46 if i > 0:
47 yield ' '
48 yield self.joinfmt(d)
39 def itermaps(self): 49 def itermaps(self):
40 makemap = self._makemap 50 makemap = self._makemap
41 for x in self._values: 51 for x in self._values:
42 yield makemap(x) 52 yield makemap(x)
43 def __contains__(self, x): 53 def __contains__(self, x):