diff mercurial/minirst.py @ 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 2025315cfb0c
children 7f8cbaaa8eea
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")