summary refs log tree commit diff stats
path: root/lib/packages/docutils
diff options
context:
space:
mode:
authorringabout <43030857+ringabout@users.noreply.github.com>2023-06-22 21:58:10 +0800
committerGitHub <noreply@github.com>2023-06-22 15:58:10 +0200
commitd137a3b52af1a83cd9617e47b63d7b3d6c4d935b (patch)
treeb807313ce6b8abe4d7986036d31b38cd21e94fd2 /lib/packages/docutils
parentac7b8b678c9e8eff70bb8147d411664470a882fd (diff)
downloadNim-d137a3b52af1a83cd9617e47b63d7b3d6c4d935b.tar.gz
fixes :idx: index in in modules (2.0 regression) and in markdown files (persistent issues since 0.20.2) (#22141)
fixes :idx: index
Diffstat (limited to 'lib/packages/docutils')
-rw-r--r--lib/packages/docutils/rstgen.nim12
-rw-r--r--lib/packages/docutils/rstidx.nim9
2 files changed, 15 insertions, 6 deletions
diff --git a/lib/packages/docutils/rstgen.nim b/lib/packages/docutils/rstgen.nim
index 57bc00fcb..ec9926863 100644
--- a/lib/packages/docutils/rstgen.nim
+++ b/lib/packages/docutils/rstgen.nim
@@ -591,10 +591,16 @@ proc readIndexDir*(dir: string):
     if path.endsWith(IndexExt):
       var (fileEntries, title) = parseIdxFile(path)
       # Depending on type add this to the list of symbols or table of APIs.
-      if title.kind == ieNimTitle:
+      if title.kind in {ieNimTitle, ieIdxRole}:
         for i in 0 ..< fileEntries.len:
-          if fileEntries[i].kind != ieNim:
-            continue
+          if title.kind == ieIdxRole:
+            # Don't add to symbols TOC entries (they start with a whitespace).
+            let toc = fileEntries[i].linkTitle
+            if toc.len > 0 and toc[0] == ' ':
+              continue
+          else:
+            if fileEntries[i].kind != ieNim:
+              continue
           # Ok, non TOC entry, add it.
           setLen(result.symbols, L + 1)
           result.symbols[L] = fileEntries[i]
diff --git a/lib/packages/docutils/rstidx.nim b/lib/packages/docutils/rstidx.nim
index c109636d7..c48f44300 100644
--- a/lib/packages/docutils/rstidx.nim
+++ b/lib/packages/docutils/rstidx.nim
@@ -109,16 +109,19 @@ proc parseIdxFile*(path: string):
     result.fileEntries[f].kind = parseIndexEntryKind(cols[0])
     result.fileEntries[f].keyword = cols[1]
     result.fileEntries[f].link = cols[2]
-    if result.title.keyword.len == 0:
+    if result.fileEntries[f].kind == ieIdxRole:
       result.fileEntries[f].module = base
     else:
-      result.fileEntries[f].module = result.title.keyword
+      if result.title.keyword.len == 0:
+        result.fileEntries[f].module = base
+      else:
+        result.fileEntries[f].module = result.title.keyword
 
     result.fileEntries[f].linkTitle = cols[3].unquoteIndexColumn
     result.fileEntries[f].linkDesc = cols[4].unquoteIndexColumn
     result.fileEntries[f].line = parseInt(cols[5])
 
-    if result.fileEntries[f].kind in {ieNimTitle, ieMarkupTitle}:
+    if result.fileEntries[f].kind in {ieNimTitle, ieMarkupTitle, ieIdxRole}:
       result.title = result.fileEntries[f]
     inc f