@@ -359,19 +359,36 @@ func (p *Parser) GenerateToc() string {
359
359
if ! tocFull && v .lvl > 3 {
360
360
continue
361
361
}
362
- // TODO: switch over levels, indent subheadings using <ul> in <ul>
362
+
363
363
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 ))
375
392
}
376
393
}
377
394
b .WriteString ("</ul>" )
0 commit comments