From 1d0175ed2791b9bc4295ca25f4958a9c6ab1b1a1 Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Sun, 20 Apr 2014 16:42:39 +0200 Subject: [PATCH] Adds explicit titles to documentation index. --- compiler/docgen.nim | 10 ++++++++-- lib/packages/docutils/rstgen.nim | 13 ++++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/compiler/docgen.nim b/compiler/docgen.nim index 6948c49797..4c98034013 100644 --- a/compiler/docgen.nim +++ b/compiler/docgen.nim @@ -541,8 +541,14 @@ proc genOutFile(d: PDoc): PRope = if toc != nil: toc = ropeFormatNamedVars(getConfigVar("doc.toc"), ["content"], [toc]) for i in countup(low(TSymKind), high(TSymKind)): app(code, d.section[i]) - if d.meta[metaTitle].len != 0: title = d.meta[metaTitle] - else: title = "Module " & extractFilename(changeFileExt(d.filename, "")) + + # Extract the title. Non API modules generate an entry in the index table. + if d.meta[metaTitle].len != 0: + title = d.meta[metaTitle] + setIndexTerm(d[], "", title) + else: + # Modules get an automatic title for the HTML, but no entry in the index. + title = "Module " & extractFilename(changeFileExt(d.filename, "")) let bodyname = if d.hasToc: "doc.body_toc" else: "doc.body_no_toc" content = ropeFormatNamedVars(getConfigVar(bodyname), ["title", diff --git a/lib/packages/docutils/rstgen.nim b/lib/packages/docutils/rstgen.nim index cead17f2b9..85a7111dc2 100644 --- a/lib/packages/docutils/rstgen.nim +++ b/lib/packages/docutils/rstgen.nim @@ -256,9 +256,11 @@ proc setIndexTerm*(d: var TRstGenerator, id, term: string, ## ## The ``d.theIndex`` string will be used to append the term in the format ## ``termfile#id``. The anchor will be the based on the name of the file - ## currently being parsed plus the `id`, which will be appended after a hash. - ## If `linkTitle` or `linkDesc` are not the empty string, two additional - ## columns with their contents will be added. + ## currently being parsed plus the specified `id`. The `id` will be appended + ## with a hash character only if its length is not zero, otherwise no + ## specific anchor will be generated. If `linkTitle` or `linkDesc` are not + ## the empty string, two additional columns with their contents will be + ## added. ## ## The index won't be written to disk unless you call ``writeIndexFile``. The ## purpose of the index is documented in the `docgen tools guide @@ -267,8 +269,9 @@ proc setIndexTerm*(d: var TRstGenerator, id, term: string, d.theIndex.add('\t') let htmlFile = changeFileExt(extractFilename(d.filename), HtmlExt) d.theIndex.add(htmlFile) - d.theIndex.add('#') - d.theIndex.add(id) + if id.len > 0: + d.theIndex.add('#') + d.theIndex.add(id) if linkTitle.len > 0 or linkDesc.len > 0: d.theIndex.add('\t' & linkTitle.quoteIndexColumn) d.theIndex.add('\t' & linkDesc.quoteIndexColumn)