diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2023-06-22 21:58:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-22 15:58:10 +0200 |
commit | d137a3b52af1a83cd9617e47b63d7b3d6c4d935b (patch) | |
tree | b807313ce6b8abe4d7986036d31b38cd21e94fd2 /lib/packages/docutils | |
parent | ac7b8b678c9e8eff70bb8147d411664470a882fd (diff) | |
download | Nim-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.nim | 12 | ||||
-rw-r--r-- | lib/packages/docutils/rstidx.nim | 9 |
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 |