D4997: absorb: use a formatter to generate output
Yuya Nishihara
yuya at tcha.org
Sat Oct 13 01:23:28 EDT 2018
> + fm.startitem()
> + fm.write('hunk', ' %s\n',
> + '@@ -%d,%d +%d,%d @@'
> + % (a1, a2 - a1, b1, b2 - b1), label='diff.hunk')
> + fm.data(path=self.path, linetype='hunk')
> +
> + def writeline(idx, diffchar, line, linetype, linelabel):
> + fm.startitem()
> + node = ''
> + if idx:
> + ctx = self.fctxs[idx]
> + fm.context(fctx=ctx)
> + node = ctx.hex()
> + fm.write('node', '%-7.7s ', node, label='absorb.node')
> + fm.write('diffchar ' + linetype, '%s%s\n', diffchar, line,
> + label=linelabel)
Nit: maybe rename `"diffchar"` to `"change"`? It's called as such in "hg grep".
https://www.mercurial-scm.org/wiki/GenericTemplatingPlan#Dictionary
> + fm.data(path=self.path, linetype=linetype)
> +
> + for i in pycompat.xrange(a1, a2):
> + writeline(aidxs[i - a1], '-', trim(alines[i]), 'deleted',
> + 'diff.deleted')
> + for i in pycompat.xrange(b1, b2):
> + writeline(bidxs[i - b1], '+', trim(blines[i]), 'inserted',
> + 'diff.inserted')
Perhaps, it's better to make deleted/inserted lines nested to preserve the
original data structure.
```
{"hunk", ...,
"deletedlines": [{"line": ...}, ...]
"insertedlines": ...}
```
or
```
{"hunk", ...,
"lines": [{"line": ..., "deleted": True}, ...]}
```
instead of
```
{"hunk", ...},
{"deleted": ...},
{"inserted": ...},
```
More information about the Mercurial-devel
mailing list