[PATCH 1 of 8] minirst: do not interpret a directive as a literal block
Simon Heimberg
simohe at besonet.ch
Tue Nov 5 02:06:32 CST 2013
# HG changeset patch
# User Simon Heimberg <simohe at 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
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]
More information about the Mercurial-devel
mailing list