From fdf4bf2cfd1c696a76b23e00f96a76ad148f53e3 Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Mon, 21 Apr 2014 12:22:18 +0200 Subject: [PATCH] Generates quick jump list to modules. --- lib/packages/docutils/rstgen.nim | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/packages/docutils/rstgen.nim b/lib/packages/docutils/rstgen.nim index 8143b46d27..225b272594 100644 --- a/lib/packages/docutils/rstgen.nim +++ b/lib/packages/docutils/rstgen.nim @@ -484,12 +484,24 @@ proc generateDocumentationJumps(docs: TIndexedDocs): string = result.add(chunks.join(", ") & ".
") +proc generateModuleJumps(modules: seq[string]): string = + ## Returns a plain list of hyperlinks to the list of modules. + result = "Modules: " + + var chunks: seq[string] = @[] + for name in modules: + chunks.add("" & name & "") + + result.add(chunks.join(", ") & ".
") + proc readIndexDir(dir: string): - tuple[symbols: seq[TIndexEntry], docs: TIndexedDocs] = + tuple[modules: seq[string], symbols: seq[TIndexEntry], docs: TIndexedDocs] = ## Walks `dir` reading ``.idx`` files converting them in TIndexEntry items. ## - ## Returns the list of free symbol entries and the separate documentation - ## indexes found. See the documentation of ``mergeIndexes`` for details. + ## Returns the list of found module names, the list of free symbol entries + ## and the different documentation indexes. The list of modules is sorted. + ## See the documentation of ``mergeIndexes`` for details. + result.modules = @[] result.docs = initTable[TIndexEntry, seq[TIndexEntry]](32) newSeq(result.symbols, 15_000) setLen(result.symbols, 0) @@ -530,11 +542,14 @@ proc readIndexDir(dir: string): for i in 0 .. ") + # Generate hyperlinks to all the linked modules. + if modules.len > 0: + result.add(generateModuleJumps(modules)) + result.add("

") + # Generate the HTML block with API documents. if docs.len > 0: result.add("

Documentation files

\n")