Mercurial > public > mercurial-scm > hg
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): |