@@ -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