summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnish <anishbhobe@hotmail.com>2018-02-16 02:24:05 +0530
committerAnish <anishbhobe@hotmail.com>2018-02-16 02:24:05 +0530
commit84e8c49f5d4cb5ba0fca2f50340a18a0a0e2c241 (patch)
tree4c0461e49f604bf9e126a9a558ff6d007bae0209
parent133942cfeb0279ca03ab9943459c5140ab1f1725 (diff)
Documentation tool does not add escapes to code and codeblocks
Instead of adding the escapes to all * and _ the tool now excludes the characters inside [code] and [codeblock]. Resolves: #15156
-rw-r--r--doc/tools/makerst.py30
1 files changed, 26 insertions, 4 deletions
diff --git a/doc/tools/makerst.py b/doc/tools/makerst.py
index 492f3b6d54..9e767bf3d6 100644
--- a/doc/tools/makerst.py
+++ b/doc/tools/makerst.py
@@ -155,8 +155,9 @@ def rstize_text(text, cclass):
# Escape * character to avoid interpreting it as emphasis
pos = 0
+ next_brac_pos = text.find('[');
while True:
- pos = text.find('*', pos)
+ pos = text.find('*', pos, next_brac_pos)
if pos == -1:
break
text = text[:pos] + "\*" + text[pos + 1:]
@@ -165,7 +166,7 @@ def rstize_text(text, cclass):
# Escape _ character at the end of a word to avoid interpreting it as an inline hyperlink
pos = 0
while True:
- pos = text.find('_', pos)
+ pos = text.find('_', pos, next_brac_pos)
if pos == -1:
break
if not text[pos + 1].isalnum(): # don't escape within a snake_case word
@@ -264,6 +265,27 @@ def rstize_text(text, cclass):
if escape_post and post_text and post_text[0].isalnum(): # not punctuation, escape
post_text = '\ ' + post_text
+ next_brac_pos = post_text.find('[',0)
+ iter_pos = 0
+ while not inside_code:
+ iter_pos = post_text.find('*', iter_pos, next_brac_pos)
+ if iter_pos == -1:
+ break
+ post_text = post_text[:iter_pos] + "\*" + post_text[iter_pos + 1:]
+ iter_pos += 2
+
+ iter_pos = 0
+ while not inside_code:
+ iter_pos = post_text.find('_', iter_pos, next_brac_pos)
+ if iter_pos == -1:
+ break
+ if not post_text[iter_pos + 1].isalnum(): # don't escape within a snake_case word
+ post_text = post_text[:iter_pos] + "\_" + post_text[iter_pos + 1:]
+ iter_pos += 2
+ else:
+ iter_pos += 1
+
+
text = pre_text + tag_text + post_text
pos = len(pre_text) + len(tag_text)
@@ -500,7 +522,7 @@ def make_rst_class(node):
enums.append(c)
else:
consts.append(c)
-
+
if len(consts) > 0:
f.write(make_heading('Numeric Constants', '-'))
for c in list(consts):
@@ -512,7 +534,7 @@ def make_rst_class(node):
s += ' --- ' + rstize_text(c.text.strip(), name)
f.write(s + '\n')
f.write('\n')
-
+
if len(enum_names) > 0:
f.write(make_heading('Enums', '-'))
for e in enum_names: