Skip to content

Commit 59e95be

Browse files
committed
fix(parser): GenerateToc heading numbers
1 parent c030108 commit 59e95be

File tree

1 file changed

+29
-12
lines changed

1 file changed

+29
-12
lines changed

parser/parser.go

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -359,19 +359,36 @@ func (p *Parser) GenerateToc() string {
359359
if !tocFull && v.lvl > 3 {
360360
continue
361361
}
362-
// TODO: switch over levels, indent subheadings using <ul> in <ul>
362+
363363
headingMap[v.lvl]++
364-
// TODO: only display level the heading is at:
365-
// h1: 1.
366-
// h2: 1.1
367-
// h3: 1.1.1
368-
// h4: 1.1.1.1
369-
// h5: 1.1.1.1.1
370-
// h6: 1.1.1.1.1.1
371-
if tocFull {
372-
b.WriteString(fmt.Sprintf("<li><a href=\"#%s\">%d.%d.%d.%d.%d.%d</a>: %s</li>", v.text, headingMap[1], headingMap[2], headingMap[3], headingMap[4], headingMap[5], headingMap[6], v.text))
373-
} else {
374-
b.WriteString(fmt.Sprintf("<li><a href=\"#%s\">%d.%d.%d</a>: %s</li>", v.text, headingMap[1], headingMap[2], headingMap[3], v.text))
364+
switch v.lvl {
365+
case 1:
366+
headingMap[2] = 0
367+
headingMap[3] = 0
368+
headingMap[4] = 0
369+
headingMap[5] = 0
370+
headingMap[6] = 0
371+
b.WriteString(fmt.Sprintf("<li><a href=\"#%s\">%d</a>: %s</li>", strings.TrimSpace(v.text), headingMap[1], v.text))
372+
case 2:
373+
headingMap[3] = 0
374+
headingMap[4] = 0
375+
headingMap[5] = 0
376+
headingMap[6] = 0
377+
b.WriteString(fmt.Sprintf("<li><a href=\"#%s\">%d.%d</a>: %s</li>", strings.TrimSpace(v.text), headingMap[1], headingMap[2], v.text))
378+
case 3:
379+
headingMap[4] = 0
380+
headingMap[5] = 0
381+
headingMap[6] = 0
382+
b.WriteString(fmt.Sprintf("<li><a href=\"#%s\">%d.%d.%d</a>: %s</li>", strings.TrimSpace(v.text), headingMap[1], headingMap[2], headingMap[3], v.text))
383+
case 4:
384+
headingMap[5] = 0
385+
headingMap[6] = 0
386+
b.WriteString(fmt.Sprintf("<li><a href=\"#%s\">%d.%d.%d.%d</a>: %s</li>", strings.TrimSpace(v.text), headingMap[1], headingMap[2], headingMap[3], headingMap[4], v.text))
387+
case 5:
388+
headingMap[6] = 0
389+
b.WriteString(fmt.Sprintf("<li><a href=\"#%s\">%d.%d.%d.%d.%d</a>: %s</li>", strings.TrimSpace(v.text), headingMap[1], headingMap[2], headingMap[3], headingMap[4], headingMap[5], v.text))
390+
case 6:
391+
b.WriteString(fmt.Sprintf("<li><a href=\"#%s\">%d.%d.%d.%d.%d.%d</a>: %s</li>", strings.TrimSpace(v.text), headingMap[1], headingMap[2], headingMap[3], headingMap[4], headingMap[5], headingMap[6], v.text))
375392
}
376393
}
377394
b.WriteString("</ul>")

0 commit comments

Comments
 (0)