diff --git a/compiler/docgen.nim b/compiler/docgen.nim index 22350a2bb..c220902ff 100644 --- a/compiler/docgen.nim +++ b/compiler/docgen.nim @@ -456,7 +456,7 @@ proc genItem(d: PDoc, n, nameNode: PNode, k: TSymKind) = var seeSrcRope: Rope = nil let docItemSeeSrc = getConfigVar("doc.item.seesrc") if docItemSeeSrc.len > 0: - let cwd = getCurrentDir() + let cwd = getCurrentDir().canonicalizePath() var path = n.info.toFullPath if path.startsWith(cwd): path = path[cwd.len+1 .. ^1].replace('\\', '/') diff --git a/config/nimdoc.cfg b/config/nimdoc.cfg index 2d6ce1861..b953383de 100644 --- a/config/nimdoc.cfg +++ b/config/nimdoc.cfg @@ -115,7 +115,7 @@ doc.listing_end = "" doc.file = """ - + @@ -1280,14 +1280,14 @@ function togglepragma(d) { function main() { var elements = document.getElementsByClassName("pragmabegin"); - for (var i = 0; i < elements.length; ++i) { + for (var i = 0; i < elements.length; ++i) { var e = elements[i]; e.onclick = function(event) { togglepragma(event.target.nextSibling); }; } var elements = document.getElementsByClassName("pragmaend"); - for (var i = 0; i < elements.length; ++i) { + for (var i = 0; i < elements.length; ++i) { var e = elements[i]; e.onclick = function(event) { togglepragma(event.target.previousSibling); diff --git a/lib/packages/docutils/rstgen.nim b/lib/packages/docutils/rstgen.nim index 8b5bb0e8f..13c0c0a29 100644 --- a/lib/packages/docutils/rstgen.nim +++ b/lib/packages/docutils/rstgen.nim @@ -415,18 +415,28 @@ proc sortIndex(a: var openArray[IndexEntry]) = a[j] <- v if h == 1: break +proc escapeLink(s: string): string = + result = newStringOfCap(s.len + s.len shr 2) + for c in items(s): + case c + of 'a'..'z', '_', 'A'..'Z', '0'..'9': + result.add c + else: + add(result, "X") + add(result, toHex(ord(c), 2)) + proc generateSymbolIndex(symbols: seq[IndexEntry]): string = - result = "" + result = "
" var i = 0 while i < symbols.len: - let keyword= symbols[i].keyword - let cleaned_keyword = keyword[1..keyword.high - 1] - result.addf("
$1:
") proc isDocumentationTitle(hyperlink: string): bool = ## Returns true if the hyperlink is actually a documentation title. @@ -463,9 +474,9 @@ proc indentToLevel(level: var int, newLevel: int): string = if level == newLevel: return if newLevel > level: - result = repeat("", level - newLevel) level = newLevel proc generateDocumentationTOC(entries: seq[IndexEntry]): string = @@ -503,7 +514,7 @@ proc generateDocumentationTOC(entries: seq[IndexEntry]): string = else: result.add(level.indentToLevel(levels[L].level)) result.add("
  • " & - levels[L].text & "\n") + levels[L].text & "
  • \n") inc L result.add(level.indentToLevel(1) & "\n") assert(not titleRef.isNil, @@ -520,7 +531,7 @@ proc generateDocumentationIndex(docs: IndexedDocs): string = for title in titles: let tocList = generateDocumentationTOC(docs.getOrDefault(title)) result.add("\n") + title.link & "\">" & title.keyword & "\n" & tocList & "\n") proc generateDocumentationJumps(docs: IndexedDocs): string = ## Returns a plain list of hyperlinks to documentation TOCs in HTML. @@ -783,7 +794,7 @@ proc renderImage(d: PDoc, n: PRstNode, result: var string) = if s.valid: dispA(d.target, options, " align=\"$1\"", "", [strip(s)]) if options.len > 0: options = dispF(d.target, "$1", "[$1]", [options]) - + if arg.valid: let htmlOut = if isObject: "" & content & ""