You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
HTML
47 lines
1.5 KiB
HTML
{{ $headers := findRE "<h[1-4].*?>(.|\n])+?</h[1-4]>" .Content }}
|
|
<!-- at least one header to link to -->
|
|
{{ if ge (len $headers) 1 }}
|
|
<div class="toc-content">
|
|
<!-- ignore empty links with + -->
|
|
{{ $h1_n := len (findRE "(.|\n])+?" .Content) }}
|
|
{{ $re := (cond (eq $h1_n 0) "<h[2-4]" "<h[1-4]") }}
|
|
{{ $renum := (cond (eq $h1_n 0) "[2-4]" "[1-4]") }}
|
|
<center>- {{ i18n "toc_title" }} -</center>
|
|
{{ $scratch := newScratch }}
|
|
{{ $scratch.Set "prev_heading" 1 }}
|
|
<ul>
|
|
{{ range $headers }}
|
|
{{ $header := . }}
|
|
{{ range first 1 (findRE $re $header 1) }}
|
|
{{ range findRE $renum . 1 }}
|
|
{{ $next_heading := (cond (eq $h1_n 0) (sub (int .) 1 ) (int . ) ) }}
|
|
{{ $prev_heading := $scratch.Get "prev_heading"}}
|
|
{{ if lt $next_heading $prev_heading }}
|
|
{{ range seq (sub $prev_heading $next_heading) }}
|
|
</ul>
|
|
{{ end }}
|
|
{{ end }}
|
|
{{ if gt $next_heading $prev_heading }}
|
|
{{ range seq (sub $next_heading $prev_heading) }}
|
|
{{ if site.Params.enableAutoCollapse }}
|
|
<ul class="collapse" data-toggle="collapse">
|
|
{{ else }}
|
|
<ul>
|
|
{{ end }}
|
|
{{ end }}
|
|
{{ end }}
|
|
{{ $anchorId := (replaceRE ".* id=\"(.*?)\".*" "$1" $header ) }}
|
|
<li>
|
|
<a href="#{{ $anchorId }}" class="nav-{{ $anchorId }}">
|
|
{{ $header | plainify | htmlUnescape }}
|
|
</a>
|
|
</li>
|
|
|
|
{{ $scratch.Set "prev_heading" $next_heading }}
|
|
{{ end }}
|
|
{{ end }}
|
|
{{ end }}
|
|
</ul>
|
|
</div>
|
|
{{ end }}
|