Patchwork [1,of,8] minirst: do not interpret a directive as a literal block

login
register
mail settings
Submitter Simon Heimberg
Date Nov. 5, 2013, 8:06 a.m.
Message ID <a9c6dcbbf60245a7b95d.1383638792@lapsi.heimberg.home>
Download mbox | patch
Permalink /patch/2853/
State Accepted
Commit 8ac7b85bd8f925e5ada3b5d5e2a921a81773c05f
Headers show

Comments

Simon Heimberg - Nov. 5, 2013, 8:06 a.m.
# HG changeset patch
# User Simon Heimberg <simohe@besonet.ch>
# Date 1383556986 -3600
#      Mon Nov 04 10:23:06 2013 +0100
# Branch stable
# Node ID a9c6dcbbf60245a7b95dd880d908e25620e5a446
# Parent  49c2fe59507407da6fc77104c272ae846d310253
minirst: do not interpret a directive as a literal block

When a directive was on its own line, it was interpreted as a literal block.

Example of problematic input:

.. note::

    a note text

Patch

diff -r 49c2fe595074 -r a9c6dcbbf602 mercurial/minirst.py
--- a/mercurial/minirst.py	Mon Nov 04 10:23:06 2013 +0100
+++ b/mercurial/minirst.py	Mon Nov 04 10:23:06 2013 +0100
@@ -106,6 +106,12 @@ 
                 # Partially minimized form: remove space and both
                 # colons.
                 blocks[i]['lines'][-1] = blocks[i]['lines'][-1][:-3]
+            elif len(blocks[i]['lines']) == 1 and \
+                 blocks[i]['lines'][0].lstrip(' ').startswith('.. ') and \
+                 blocks[i]['lines'][0].find(' ', 3) == -1:
+                # directive on its onw line, not a literal block
+                i += 1
+                continue
             else:
                 # Fully minimized form: remove just one colon.
                 blocks[i]['lines'][-1] = blocks[i]['lines'][-1][:-1]