{{- if (.Param "UseHugoToc") }}
{{- .TableOfContents -}}
{{- else }}
{{- $largest := 6 -}}
{{- range $headers -}}
{{- $headerLevel := index (findRE "[1-6]" . 1) 0 -}}
{{- $headerLevel := len (seq $headerLevel) -}}
{{- if lt $headerLevel $largest -}}
{{- $largest = $headerLevel -}}
{{- end -}}
{{- end -}}
{{- $firstHeaderLevel := len (seq (index (findRE "[1-6]" (index $headers 0) 1) 0)) -}}
{{- $bareul := slice -}}
{{- range seq (sub $firstHeaderLevel $largest) -}}
{{- $bareul = $bareul | append (sub (add $largest .) 1) -}}
{{- end -}}
{{- range $i, $header := $headers -}}
{{- $headerLevel := index (findRE "[1-6]" . 1) 0 -}}
{{- $headerLevel := len (seq $headerLevel) -}}
{{/* get id="xyz" */}}
{{- $id := index (findRE "(id=\"(.*?)\")" $header 9) 0 }}
{{- /* strip id="" to leave xyz, no way to get regex capturing groups in hugo */ -}}
{{- $cleanedID := replace (replace $id "id=\"" "") "\"" "" }}
{{- $header := replaceRE "((.|\n)+?)" "$1" $header | strings.TrimSpace -}}
{{- if ne $i 0 -}}
{{- $prevHeaderLevel := index (findRE "[1-6]" (index $headers (sub $i 1)) 1) 0 -}}
{{- $prevHeaderLevel := len (seq $prevHeaderLevel) -}}
{{- if gt $headerLevel $prevHeaderLevel -}}
{{- range seq $prevHeaderLevel (sub $headerLevel 1) -}}
{{/* the first should not be recorded */}}
{{- if ne $prevHeaderLevel . -}}
{{- $bareul = $bareul | append . -}}
{{- end -}}
{{- end -}}
{{- else -}}
{{- if lt $headerLevel $prevHeaderLevel -}}
{{- range seq (sub $prevHeaderLevel 1) -1 $headerLevel -}}
{{- if in $bareul . -}}
{{/* manually do pop item */}}
{{- $bareul = first (sub (len $bareul) 1) $bareul -}}
{{- else -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end }}
-
{{- $header | plainify | safeHTML -}}
{{- else }}
-
{{- $header | plainify | safeHTML -}}
{{- end -}}
{{- end -}}
{{- $firstHeaderLevel := $largest }}
{{- $lastHeaderLevel := len (seq (index (findRE "[1-6]" (index $headers (sub (len $headers) 1)) 1) 0)) }}
{{- range seq (sub $lastHeaderLevel $firstHeaderLevel) -}}
{{- if in $bareul (add . $firstHeaderLevel) }}
{{- else }}
{{- end -}}
{{- end }}
{{- end }}