{{- /* This is needed to fix a bug where search list would contain html tags from heading like /. 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 -}} {{- /* Overridden from the hextra theme: use the plain-text heading title (not its rendered HTML) when building the search key, so headings containing inline markup (e.g. `` `mounts` ``) don't leak literal tags into search result titles. */ -}} {{- $key := (printf "%s#%s" $heading.ID ($heading.Title | plainify)) -}} {{- $.scratch.Add "keys" (slice $key) -}} {{- end -}} {{- $title := (printf "%s" $heading.Level $heading.Title) | htmlUnescape -}} {{- $.scratch.Add "titles" (slice $title) -}} {{- partial "utils/extract-headings.html" (dict "target" $heading "scratch" $.scratch ) }} {{- end -}}