comparison mercurial/formatter.py @ 32950:5100ce217dfa

formatter: add support for separator template This seems useful for writing JSON template.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 22 Apr 2017 21:50:51 +0900
parents 13eebc189ff3
children 61b60b28c381
comparison
equal deleted inserted replaced
32949:13eebc189ff3 32950:5100ce217dfa
349 self._out = out 349 self._out = out
350 spec = lookuptemplate(ui, topic, opts.get('template', '')) 350 spec = lookuptemplate(ui, topic, opts.get('template', ''))
351 self._tref = spec.ref 351 self._tref = spec.ref
352 self._t = loadtemplater(ui, spec, cache=templatekw.defaulttempl) 352 self._t = loadtemplater(ui, spec, cache=templatekw.defaulttempl)
353 self._parts = templatepartsmap(spec, self._t, 353 self._parts = templatepartsmap(spec, self._t,
354 ['docheader', 'docfooter']) 354 ['docheader', 'docfooter', 'separator'])
355 self._counter = itertools.count() 355 self._counter = itertools.count()
356 self._cache = {} # for templatekw/funcs to store reusable data 356 self._cache = {} # for templatekw/funcs to store reusable data
357 self._renderitem('docheader', {}) 357 self._renderitem('docheader', {})
358 358
359 def context(self, **ctxs): 359 def context(self, **ctxs):
362 assert all(k == 'ctx' for k in ctxs) 362 assert all(k == 'ctx' for k in ctxs)
363 self._item.update(ctxs) 363 self._item.update(ctxs)
364 364
365 def _showitem(self): 365 def _showitem(self):
366 item = self._item.copy() 366 item = self._item.copy()
367 item['index'] = next(self._counter) 367 item['index'] = index = next(self._counter)
368 if index > 0:
369 self._renderitem('separator', {})
368 self._renderitem(self._tref, item) 370 self._renderitem(self._tref, item)
369 371
370 def _renderitem(self, part, item): 372 def _renderitem(self, part, item):
371 if part not in self._parts: 373 if part not in self._parts:
372 return 374 return