Mercurial > public > mercurial-scm > hg
comparison mercurial/logcmdutil.py @ 36989:de117f579431
templater: factor out helper that renders named template as string
This is quite common in non-web templating, and **kwargs expansion is annoying
because of the unicode-ness of Python3.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Fri, 16 Mar 2018 21:24:12 +0900 |
parents | 317382151ac3 |
children | d64ae4fef471 |
comparison
equal
deleted
inserted
replaced
36988:317382151ac3 | 36989:de117f579431 |
---|---|
31 revsetlang, | 31 revsetlang, |
32 scmutil, | 32 scmutil, |
33 smartset, | 33 smartset, |
34 templatekw, | 34 templatekw, |
35 templater, | 35 templater, |
36 templateutil, | |
37 util, | 36 util, |
38 ) | 37 ) |
39 from .utils import dateutil | 38 from .utils import dateutil |
40 | 39 |
41 def getlimit(opts): | 40 def getlimit(opts): |
448 partnames = [p for p in self._parts.keys() if p != tmplspec.ref] | 447 partnames = [p for p in self._parts.keys() if p != tmplspec.ref] |
449 m = formatter.templatepartsmap(tmplspec, self.t, partnames) | 448 m = formatter.templatepartsmap(tmplspec, self.t, partnames) |
450 self._parts.update(m) | 449 self._parts.update(m) |
451 | 450 |
452 if self._parts['docheader']: | 451 if self._parts['docheader']: |
453 self.ui.write( | 452 self.ui.write(self.t.render(self._parts['docheader'], {})) |
454 templateutil.stringify(self.t(self._parts['docheader']))) | |
455 | 453 |
456 def close(self): | 454 def close(self): |
457 if self._parts['docfooter']: | 455 if self._parts['docfooter']: |
458 if not self.footer: | 456 if not self.footer: |
459 self.footer = "" | 457 self.footer = "" |
460 self.footer += templateutil.stringify( | 458 self.footer += self.t.render(self._parts['docfooter'], {}) |
461 self.t(self._parts['docfooter'])) | |
462 return super(changesettemplater, self).close() | 459 return super(changesettemplater, self).close() |
463 | 460 |
464 def _show(self, ctx, copies, props): | 461 def _show(self, ctx, copies, props): |
465 '''show a single changeset or file revision''' | 462 '''show a single changeset or file revision''' |
466 props = props.copy() | 463 props = props.copy() |
467 props['ctx'] = ctx | 464 props['ctx'] = ctx |
468 props['index'] = index = next(self._counter) | 465 props['index'] = index = next(self._counter) |
469 props['revcache'] = {'copies': copies} | 466 props['revcache'] = {'copies': copies} |
470 props = pycompat.strkwargs(props) | |
471 | 467 |
472 # write separator, which wouldn't work well with the header part below | 468 # write separator, which wouldn't work well with the header part below |
473 # since there's inherently a conflict between header (across items) and | 469 # since there's inherently a conflict between header (across items) and |
474 # separator (per item) | 470 # separator (per item) |
475 if self._parts['separator'] and index > 0: | 471 if self._parts['separator'] and index > 0: |
476 self.ui.write( | 472 self.ui.write(self.t.render(self._parts['separator'], {})) |
477 templateutil.stringify(self.t(self._parts['separator']))) | |
478 | 473 |
479 # write header | 474 # write header |
480 if self._parts['header']: | 475 if self._parts['header']: |
481 h = templateutil.stringify(self.t(self._parts['header'], **props)) | 476 h = self.t.render(self._parts['header'], props) |
482 if self.buffered: | 477 if self.buffered: |
483 self.header[ctx.rev()] = h | 478 self.header[ctx.rev()] = h |
484 else: | 479 else: |
485 if self.lastheader != h: | 480 if self.lastheader != h: |
486 self.lastheader = h | 481 self.lastheader = h |
487 self.ui.write(h) | 482 self.ui.write(h) |
488 | 483 |
489 # write changeset metadata, then patch if requested | 484 # write changeset metadata, then patch if requested |
490 key = self._parts[self._tref] | 485 key = self._parts[self._tref] |
491 self.ui.write(templateutil.stringify(self.t(key, **props))) | 486 self.ui.write(self.t.render(key, props)) |
492 self._showpatch(ctx) | 487 self._showpatch(ctx) |
493 | 488 |
494 if self._parts['footer']: | 489 if self._parts['footer']: |
495 if not self.footer: | 490 if not self.footer: |
496 self.footer = templateutil.stringify( | 491 self.footer = self.t.render(self._parts['footer'], props) |
497 self.t(self._parts['footer'], **props)) | |
498 | 492 |
499 def templatespec(tmpl, mapfile): | 493 def templatespec(tmpl, mapfile): |
500 if mapfile: | 494 if mapfile: |
501 return formatter.templatespec('changeset', tmpl, mapfile) | 495 return formatter.templatespec('changeset', tmpl, mapfile) |
502 else: | 496 else: |