From 56b804a283a69baa4887eaf300c353a5748f86a4 Mon Sep 17 00:00:00 2001
From: Araq
Date: Fri, 11 Jan 2019 16:31:24 +0100
Subject: [PATCH] RST parser: fixes #8158
---
lib/packages/docutils/rst.nim | 6 +++---
nimdoc/testproject/expected/subdir/subdir_b/utils.html | 9 ++++++++-
nimdoc/testproject/subdir/subdir_b/utils.nim | 9 +++++++++
3 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/lib/packages/docutils/rst.nim b/lib/packages/docutils/rst.nim
index 25cea5943..551df9919 100644
--- a/lib/packages/docutils/rst.nim
+++ b/lib/packages/docutils/rst.nim
@@ -560,9 +560,9 @@ proc match(p: RstParser, start: int, expr: string): bool =
result = (p.tok[j].kind == tkWord) or (p.tok[j].symbol == "#")
if result:
case p.tok[j].symbol[0]
- of 'a'..'z', 'A'..'Z': result = len(p.tok[j].symbol) == 1
+ of 'a'..'z', 'A'..'Z', '#': result = len(p.tok[j].symbol) == 1
of '0'..'9': result = allCharsInSet(p.tok[j].symbol, {'0'..'9'})
- else: discard
+ else: result = false
else:
var c = expr[i]
var length = 0
@@ -1105,7 +1105,7 @@ proc whichSection(p: RstParser): RstNodeKind =
elif match(p, p.idx, ":w:") and predNL(p):
# (p.tok[p.idx].symbol == ":")
result = rnFieldList
- elif match(p, p.idx, "(e) "):
+ elif match(p, p.idx, "(e) ") or match(p, p.idx, "e. "):
result = rnEnumList
elif match(p, p.idx, "+a+"):
result = rnGridTable
diff --git a/nimdoc/testproject/expected/subdir/subdir_b/utils.html b/nimdoc/testproject/expected/subdir/subdir_b/utils.html
index f2f626459..9ba3c24e1 100644
--- a/nimdoc/testproject/expected/subdir/subdir_b/utils.html
+++ b/nimdoc/testproject/expected/subdir/subdir_b/utils.html
@@ -1281,7 +1281,14 @@ function main() {
-
+- An enumeration
+- Second idea here.
+
+More text.
+- Other case value
+- Second case.
+
+
diff --git a/nimdoc/testproject/subdir/subdir_b/utils.nim b/nimdoc/testproject/subdir/subdir_b/utils.nim
index 28c00c755..0576f194f 100644
--- a/nimdoc/testproject/subdir/subdir_b/utils.nim
+++ b/nimdoc/testproject/subdir/subdir_b/utils.nim
@@ -10,6 +10,15 @@
###### Up to level 6
+
+#. An enumeration
+#. Second idea here.
+
+More text.
+
+1. Other case value
+2. Second case.
+
]##
type