Mercurial > hg
changeset 25513:0c6f98398f8a
formatter: add template support
This lets all the non-log commands that use the formatter use
templates. There are still some things that don't work, for instance:
- color (needs "repo" in map)
- shortest (needs "ctx" in map)
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 10 Jun 2015 14:33:38 -0500 |
parents | 8463433c2689 |
children | 9b1a8ce1f03b |
files | mercurial/formatter.py |
diffstat | 1 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/formatter.py Wed Jun 10 14:30:18 2015 -0500 +++ b/mercurial/formatter.py Wed Jun 10 14:33:38 2015 -0500 @@ -135,6 +135,15 @@ baseformatter.end(self) self._ui.write("\n]\n") +class templateformatter(baseformatter): + def __init__(self, ui, topic, opts): + baseformatter.__init__(self, ui, topic, opts) + self._topic = topic + self._t = gettemplater(ui, topic, opts.get('template', '')) + def _showitem(self): + g = self._t(self._topic, **self._item) + self._ui.write(templater.stringify(g)) + def lookuptemplate(ui, topic, tmpl): # looks like a literal template? if '{' in tmpl: @@ -187,7 +196,7 @@ elif template == "debug": return debugformatter(ui, topic, opts) elif template != "": - raise util.Abort(_("custom templates not yet supported")) + return templateformatter(ui, topic, opts) elif ui.configbool('ui', 'formatdebug'): return debugformatter(ui, topic, opts) elif ui.configbool('ui', 'formatjson'):