35 - "{ifcontains(file, files, ...)}", "{ifcontains(key, extras, ...)}" |
35 - "{ifcontains(file, files, ...)}", "{ifcontains(key, extras, ...)}" |
36 - "{get(extras, key)}" |
36 - "{get(extras, key)}" |
37 - "{files|json}" |
37 - "{files|json}" |
38 """ |
38 """ |
39 |
39 |
40 def __init__(self, gen, values, makemap, joinfmt): |
40 def __init__(self, gen, values, makemap, joinfmt, keytype=None): |
41 if gen is not None: |
41 if gen is not None: |
42 self.gen = gen # generator or function returning generator |
42 self.gen = gen # generator or function returning generator |
43 self._values = values |
43 self._values = values |
44 self._makemap = makemap |
44 self._makemap = makemap |
45 self.joinfmt = joinfmt |
45 self.joinfmt = joinfmt |
|
46 self.keytype = keytype # hint for 'x in y' where type(x) is unresolved |
46 def gen(self): |
47 def gen(self): |
47 """Default generator to stringify this as {join(self, ' ')}""" |
48 """Default generator to stringify this as {join(self, ' ')}""" |
48 for i, x in enumerate(self._values): |
49 for i, x in enumerate(self._values): |
49 if i > 0: |
50 if i > 0: |
50 yield ' ' |
51 yield ' ' |
786 revision) nothing is shown.""" |
787 revision) nothing is shown.""" |
787 args = pycompat.byteskwargs(args) |
788 args = pycompat.byteskwargs(args) |
788 repo = args['repo'] |
789 repo = args['repo'] |
789 ctx = args['ctx'] |
790 ctx = args['ctx'] |
790 pctxs = scmutil.meaningfulparents(repo, ctx) |
791 pctxs = scmutil.meaningfulparents(repo, ctx) |
791 # ifcontains() needs a list of str |
792 prevs = [p.rev() for p in pctxs] |
792 prevs = ["%d" % p.rev() for p in pctxs] |
|
793 parents = [[('rev', p.rev()), |
793 parents = [[('rev', p.rev()), |
794 ('node', p.hex()), |
794 ('node', p.hex()), |
795 ('phase', p.phasestr())] |
795 ('phase', p.phasestr())] |
796 for p in pctxs] |
796 for p in pctxs] |
797 f = _showlist('parent', parents, args) |
797 f = _showlist('parent', parents, args) |
798 return _hybrid(f, prevs, lambda x: {'ctx': repo[int(x)], 'revcache': {}}, |
798 return _hybrid(f, prevs, lambda x: {'ctx': repo[x], 'revcache': {}}, |
799 lambda x: scmutil.formatchangeid(repo[int(x)])) |
799 lambda x: scmutil.formatchangeid(repo[x]), keytype=int) |
800 |
800 |
801 @templatekeyword('phase') |
801 @templatekeyword('phase') |
802 def showphase(repo, ctx, templ, **args): |
802 def showphase(repo, ctx, templ, **args): |
803 """String. The changeset phase name.""" |
803 """String. The changeset phase name.""" |
804 return ctx.phasestr() |
804 return ctx.phasestr() |
816 def showrevslist(name, revs, **args): |
816 def showrevslist(name, revs, **args): |
817 """helper to generate a list of revisions in which a mapped template will |
817 """helper to generate a list of revisions in which a mapped template will |
818 be evaluated""" |
818 be evaluated""" |
819 args = pycompat.byteskwargs(args) |
819 args = pycompat.byteskwargs(args) |
820 repo = args['ctx'].repo() |
820 repo = args['ctx'].repo() |
821 # ifcontains() needs a list of str |
821 f = _showlist(name, ['%d' % r for r in revs], args) |
822 revs = ["%d" % r for r in revs] |
|
823 f = _showlist(name, revs, args) |
|
824 return _hybrid(f, revs, |
822 return _hybrid(f, revs, |
825 lambda x: {name: x, 'ctx': repo[int(x)], 'revcache': {}}, |
823 lambda x: {name: x, 'ctx': repo[x], 'revcache': {}}, |
826 pycompat.identity) |
824 pycompat.identity, keytype=int) |
827 |
825 |
828 @templatekeyword('subrepos') |
826 @templatekeyword('subrepos') |
829 def showsubrepos(**args): |
827 def showsubrepos(**args): |
830 """List of strings. Updated subrepositories in the changeset.""" |
828 """List of strings. Updated subrepositories in the changeset.""" |
831 args = pycompat.byteskwargs(args) |
829 args = pycompat.byteskwargs(args) |