Mercurial > hg
changeset 20654:af9d9b778550
minirst: create valid output when table data contains a newline
When table data contained a newline, the result of minirst.maketable
did not look nice plus it was not recognised by minirst.format:
== === ====
l1 1 one
l2 2 2
22
l3
== === ====
This problem occurred when the description of options had a very long
translation which was split by newlines. Do not bother a translator with
this detail.
The multiline translations for option descriptions have been fixed in
baf1600adfbe in it.po, de.po and ro.po. I manually did the same as this patch
does, I removed the newlines.
When a newline was in the description, this created unusable help output:
$ hg help somecommand
hg somecommand [option]...
with somecommand, you can...
options:
== =================== =======================================================
=================================== --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -n --norm
normal desc --newline VALUE line1 line2 == =================== ===============
===========================================================================
now this looks much nicer:
...
options:
--longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-n --norm normal desc
--newline VALUE line1 line2
author | Simon Heimberg <simohe@besonet.ch> |
---|---|
date | Wed, 19 Feb 2014 17:32:21 +0100 |
parents | 3bfac190c7cd |
children | 37f3be9d1541 |
files | mercurial/minirst.py tests/test-help.t tests/test-minirst.py tests/test-minirst.py.out |
diffstat | 4 files changed, 57 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/minirst.py Wed Mar 05 14:03:08 2014 +0100 +++ b/mercurial/minirst.py Wed Feb 19 17:32:21 2014 +0100 @@ -697,6 +697,10 @@ for row in data: l = [] for w, v in zip(widths, row): + if '\n' in v: + # only remove line breaks and indentation, long lines are + # handled by the next tool + v = ' '.join(e.lstrip() for e in v.split('\n')) pad = ' ' * (w - encoding.colwidth(v)) l.append(v + pad) out.append(indent + ' '.join(l) + "\n")
--- a/tests/test-help.t Wed Mar 05 14:03:08 2014 +0100 +++ b/tests/test-help.t Wed Feb 19 17:32:21 2014 +0100 @@ -657,7 +657,10 @@ > pass > > cmdtable = { - > "nohelp": (nohelp, [], "hg nohelp"), + > "nohelp": (nohelp, [('', 'longdesc', 3, 'x'*90), + > ('n', '', None, 'normal desc'), + > ('', 'newline', '', 'line1\nline2'), + > ], "hg nohelp"), > } > > commands.norepo += ' nohelp' @@ -672,6 +675,13 @@ (no help text available) + options: + + --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (default: 3) + -n -- normal desc + --newline VALUE line1 line2 + use "hg -v help nohelp" to show the global options $ hg help -k nohelp
--- a/tests/test-minirst.py Wed Mar 05 14:03:08 2014 +0100 +++ b/tests/test-minirst.py Wed Feb 19 17:32:21 2014 +0100 @@ -244,3 +244,14 @@ print table debugformats('table', table) + +data = [['s', 'long', 'line\ngoes on here'], + ['', 'xy', 'tried to fix here\n by indenting']] + +rst = minirst.maketable(data, 1, False) +table = ''.join(rst) + +print table + +debugformats('table+nl', table) +
--- a/tests/test-minirst.py.out Wed Mar 05 14:03:08 2014 +0100 +++ b/tests/test-minirst.py.out Wed Feb 19 17:32:21 2014 +0100 @@ -773,3 +773,34 @@ </table> ---------------------------------------------------------------------- + = ==== ====================================== + s long line goes on here + xy tried to fix here by indenting + = ==== ====================================== + +== table+nl == +60 column format: +---------------------------------------------------------------------- + s long line goes on here + xy tried to fix here by indenting +---------------------------------------------------------------------- + +30 column format: +---------------------------------------------------------------------- + s long line goes on here + xy tried to fix here by + indenting +---------------------------------------------------------------------- + +html format: +---------------------------------------------------------------------- +<table> +<tr><td>s</td> +<td>long</td> +<td>line goes on here</td></tr> +<tr><td></td> +<td>xy</td> +<td>tried to fix here by indenting</td></tr> +</table> +---------------------------------------------------------------------- +