SandpointsTheme/layouts/_default/_markup/render-heading.html

30 lines
1.2 KiB
HTML

{{ $currentLevel := .Level }}
{{ $currentHeaderKey := printf "H_%d" $currentLevel }}
{{ if not (.Page.Store.Get $currentHeaderKey) }}
{{ .Page.Store.Set $currentHeaderKey 1 }}
{{ else }}
{{ .Page.Store.Set $currentHeaderKey (add 1 (.Page.Store.Get $currentHeaderKey)) }}
{{ end }}
{{ if .Page.Store.Get "previousLevel" }}
{{ $previousLevel := .Page.Store.Get "previousLevel" }}
{{ if gt $previousLevel $currentLevel }}
{{ range $header := slice 1 2 3 4 5 6 }}
{{ if gt $header $currentLevel }}
{{ $.Page.Store.Delete (printf "H_%d" $header) }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ $counter := "" }}
{{ range $header := slice 1 2 3 4 5 6 }}
{{ if gt ($.Page.Store.Get (printf "H_%d" $header)) 0 }}
{{ $counter = printf "%s%d." $counter ($.Page.Store.Get (printf "H_%d" $header))}}
{{ end }}
{{end}}
<h{{ add 1 .Level }} id="{{ .Anchor | safeURL }}" class="hx css-{{ .Page.File.UniqueID }}-h{{ add 1 .Level }}"><span class="counters">{{ $counter }} </span>{{ .Text | safeHTML }}<a class="hpar" href="#{{ .Anchor | safeURL }}"></a> {{ .Page.Store.Get "level" }}</h{{ add 1 .Level }}>
{{ .Page.Store.Set "previousLevel" .Level }}