diff options
author | def <dennis@felsin9.de> | 2015-03-13 01:32:23 +0100 |
---|---|---|
committer | def <dennis@felsin9.de> | 2015-03-13 01:32:23 +0100 |
commit | 0255876055b280eae4e185bf9e6580b8656255d5 (patch) | |
tree | 8e7a31ef1606e4ee9e3b410356364ef0a94aed78 /lib/packages/docutils/rstgen.nim | |
parent | c707923cc1d6f6aa08afadb02ccf21d15d223f7f (diff) | |
download | Nim-0255876055b280eae4e185bf9e6580b8656255d5.tar.gz |
rstgen: Unique reference names in TOC
- Fixes #2269 - Keeps track of higher level section to create unique reference names
Diffstat (limited to 'lib/packages/docutils/rstgen.nim')
-rw-r--r-- | lib/packages/docutils/rstgen.nim | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/packages/docutils/rstgen.nim b/lib/packages/docutils/rstgen.nim index a385336d6..da05be9bf 100644 --- a/lib/packages/docutils/rstgen.nim +++ b/lib/packages/docutils/rstgen.nim @@ -681,7 +681,14 @@ proc renderHeadline(d: PDoc, n: PRstNode, result: var string) = var tmp = "" for i in countup(0, len(n) - 1): renderRstToOut(d, n.sons[i], tmp) d.currentSection = tmp - var refname = rstnodeToRefname(n) + # Find the last higher level section for unique reference name + var sectionPrefix = "" + for i in countdown(d.tocPart.high, 0): + let n2 = d.tocPart[i].n + if n2.level < n.level: + sectionPrefix = rstnodeToRefname(n2) & "-" + break + var refname = sectionPrefix & rstnodeToRefname(n) if d.hasToc: var length = len(d.tocPart) setLen(d.tocPart, length + 1) |