istio.io/layouts/partials/toc.html

89 lines
3.3 KiB
HTML

{{ $page := .page }}
{{ $custom_headers := .headers }}
{{ $page.Scratch.Set "needTOC" false }}
{{ $page.Scratch.Set "seeAlso" false }}
{{ $related := $page.Site.RegularPages.Related $page | first 6 }}
{{ with $related }}
{{ $page.Scratch.Set "seeAlso" true }}
{{ end }}
{{ if $page.Scratch.Get "skipSeeAlso" }}
{{ $page.Scratch.Set "seeAlso" false }}
{{ end }}
{{ if $page.Params.skip_seealso }}
{{ $page.Scratch.Set "seeAlso" false }}
{{ end }}
{{ $hdr_types := "23456" }}
{{ if eq $page.Params.max_toc_level 2 }}
{{ $hdr_types = "2" }}
{{ else if eq $page.Params.max_toc_level 3 }}
{{ $hdr_types = "23" }}
{{ else if eq $page.Params.max_toc_level 4 }}
{{ $hdr_types = "234" }}
{{ else if eq $page.Params.max_toc_level 5 }}
{{ $hdr_types = "2345" }}
{{ end }}
{{ if eq $page.Params.generator "pkg-collateral-docs" }}
{{ $hdr_types = "23"}}
{{ end }}
{{ if not $page.Params.skip_toc }}
{{ $headers := or ($custom_headers) (findRE (printf "<h[%s].*?id=\".*?\".*?>.*?</h[%s]>" $hdr_types $hdr_types) $page.Content) }}
{{ $len := len $headers }}
{{ if or (gt $len 0) ($page.Scratch.Get "seeAlso") }}
{{ $page.Scratch.Set "needTOC" true }}
<ol>
{{ $page.Scratch.Set "level" 50 }}
{{ range $h := $headers }}
{{ $level := index (index (findRE "<h[23456].*?" $h) 0) 2 | int }}
{{ $id := replaceRE (printf "<h[%s].*?id=\"(.*?)\".*?>.*?</h[%s]>" $hdr_types $hdr_types) "$1" $h }}
{{ $title := replaceRE (printf "<h[%s].*?>(.*?)</h[%s]>" $hdr_types $hdr_types) "$1" $h }}
{{ $current := $page.Scratch.Get "level" | int }}
{{ if gt $level $current }}
{{ $delta := sub $level $current }}
{{ range $index, $num := (seq $delta) }}
<!-- Add Parameters for generated docs *and* if it's the top-level -->
{{ if and (eq $page.Params.generator "pkg-collateral-docs") (eq $current 50) }}
<li role="none" aria-label="Parameters"><a href="#title">Parameters</a>
{{ end }}
<ol>
{{ end }}
{{ else if lt $level $current }}
{{ $delta := sub $current $level }}
{{ range $index, $num := (seq $delta) }}
</ol>
</li>
{{ end }}
{{ end }}
{{ $short_title := $title }}
{{ if $page.Params.remove_toc_prefix }}
{{ $short_title = strings.TrimPrefix $page.Params.remove_toc_prefix $title }}
{{ end }}
<li role="none" aria-label="{{ $title | safeHTML }}"><a href="#{{ $id }}">{{ $short_title | safeHTML }}</a>
{{ $page.Scratch.Set "level" $level }}
{{ end }}
{{ $delta := sub ($page.Scratch.Get "level") 50 }}
{{ range $index, $num := (seq $delta) }}
</ol>
</li>
{{ end }}
{{ if $page.Scratch.Get "seeAlso" }}
{{ with $related }}
<li role="none" aria-label="{{ i18n "see_also" }}"><a href="#see-also">{{ i18n "see_also" }}</a></li>
{{ end }}
{{ end }}
</ol>
{{ end }}
{{ end }}