fixes :idx: index in in modules (2.0 regression) and in markdown files (persistent issues since 0.20.2) (#22141)

fixes :idx: index
This commit is contained in:
ringabout
2023-06-22 21:58:10 +08:00
committed by GitHub
parent ac7b8b678c
commit d137a3b52a
2 changed files with 15 additions and 6 deletions

View File

@@ -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]

View File

@@ -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