diff mercurial/minirst.py @ 15125:bdc595059108

minirst: end all blocks with newlines Formerly RST blocks were formatted without a trailing newline, which wasn't particularly helpful. Now everything that comes back from the formatter has a trailing newline so remove all the extra ones added by users.
author Matt Mackall <mpm@selenic.com>
date Sat, 17 Sep 2011 14:17:09 -0500
parents 9b41ccb2043e
children 87bb975a1844
line wrap: on
line diff
--- a/mercurial/minirst.py	Mon Sep 19 14:19:26 2011 +0200
+++ b/mercurial/minirst.py	Sat Sep 17 14:17:09 2011 -0500
@@ -398,7 +398,7 @@
     hanging = block['optstrwidth']
     initindent = '%s%s  ' % (block['optstr'], ' ' * ((hanging - colwidth)))
     hangindent = ' ' * (encoding.colwidth(initindent) + 1)
-    return ' %s' % (util.wrap(desc, usablewidth,
+    return ' %s\n' % (util.wrap(desc, usablewidth,
                                            initindent=initindent,
                                            hangindent=hangindent))
 
@@ -413,17 +413,18 @@
 
         defindent = indent + hang * ' '
         text = ' '.join(map(str.strip, block['lines']))
-        return '%s\n%s' % (indent + admonition, util.wrap(text, width=width,
-                                           initindent=defindent,
-                                           hangindent=defindent))
+        return '%s\n%s\n' % (indent + admonition,
+                             util.wrap(text, width=width,
+                                       initindent=defindent,
+                                       hangindent=defindent))
     if block['type'] == 'margin':
-        return ''
+        return '\n'
     if block['type'] == 'literal':
         indent += '  '
-        return indent + ('\n' + indent).join(block['lines'])
+        return indent + ('\n' + indent).join(block['lines']) + '\n'
     if block['type'] == 'section':
         underline = encoding.colwidth(block['lines'][0]) * block['underline']
-        return "%s%s\n%s%s" % (indent, block['lines'][0],indent, underline)
+        return "%s%s\n%s%s\n" % (indent, block['lines'][0],indent, underline)
     if block['type'] == 'table':
         table = block['table']
         # compute column widths
@@ -447,9 +448,9 @@
         hang = len(block['lines'][-1]) - len(block['lines'][-1].lstrip())
         defindent = indent + hang * ' '
         text = ' '.join(map(str.strip, block['lines'][1:]))
-        return '%s\n%s' % (term, util.wrap(text, width=width,
-                                           initindent=defindent,
-                                           hangindent=defindent))
+        return '%s\n%s\n' % (term, util.wrap(text, width=width,
+                                             initindent=defindent,
+                                             hangindent=defindent))
     subindent = indent
     if block['type'] == 'bullet':
         if block['lines'][0].startswith('| '):
@@ -481,7 +482,7 @@
     text = ' '.join(map(str.strip, block['lines']))
     return util.wrap(text, width=width,
                      initindent=indent,
-                     hangindent=subindent)
+                     hangindent=subindent) + '\n'
 
 def parse(text, indent=0, keep=None):
     """Parse text into a list of blocks"""
@@ -504,13 +505,13 @@
     return blocks, pruned
 
 def formatblocks(blocks, width):
-    text = '\n'.join(formatblock(b, width) for b in blocks)
+    text = ''.join(formatblock(b, width) for b in blocks)
     return text
 
 def format(text, width, indent=0, keep=None):
     """Parse and format the text according to width."""
     blocks, pruned = parse(text, indent, keep or [])
-    text = '\n'.join(formatblock(b, width) for b in blocks)
+    text = ''.join(formatblock(b, width) for b in blocks)
     if keep is None:
         return text
     else: