mirror of
https://github.com/imfing/hextra.git
synced 2025-08-23 17:46:38 -04:00
32 lines
1.1 KiB
HTML
32 lines
1.1 KiB
HTML
{{- /*
|
|
Extracts all headings from a page and adds them to the scratchpad.
|
|
|
|
The keys can be obtained from the scratchpad by using the "keys" key.
|
|
The titles can be obtained from the scratchpad by using the "titles" key.
|
|
|
|
The scratchpad must be initialized with empty slices before calling this function for the keys "keys" and "titles"
|
|
|
|
@param {any} target The element to extract headings from.
|
|
@param {any} scratch The scratchpad to add the keys and titles to.
|
|
|
|
@example {{ partial "utils/extract-headings.html" (dict "target" $h1 "scratch" $s) }}
|
|
*/ -}}
|
|
|
|
{{- range $heading := index .target.Headings -}}
|
|
{{- if and (eq $heading.Level 0) (not $heading.Title) -}}
|
|
{{- $.scratch.Add "keys" (slice $heading.Title) -}}
|
|
{{- else -}}
|
|
{{- $key := (printf "%s#%s" $heading.ID $heading.Title) -}}
|
|
{{- $.scratch.Add "keys" (slice $key) -}}
|
|
{{- end -}}
|
|
|
|
{{- $title := (printf "<h%d>%s" $heading.Level $heading.Title) | htmlUnescape -}}
|
|
{{- $.scratch.Add "titles" (slice $title) -}}
|
|
|
|
{{- partial "utils/extract-headings.html" (dict
|
|
"target" $heading
|
|
"scratch" $.scratch
|
|
)
|
|
}}
|
|
{{- end -}}
|