37 lines
1.1 KiB
HTML
37 lines
1.1 KiB
HTML
{{- /*
|
|
This is generic function the helps modifying and merging dictionaries, usually used for html attributes
|
|
Logic is executed in order defined below.
|
|
partial "docs/text/mapper" (dict
|
|
"attributes" (cond .IsNamedParams .Params dict)
|
|
"keep" (slice "id" "class" "tabindex" "alt" "title" "loading")
|
|
"set" (dict "href" "https://")
|
|
"merge" (dict "class" "a-class")
|
|
"delimiter" " " // Used when merging values
|
|
"delete" (slice "src")
|
|
)
|
|
*/ -}}
|
|
|
|
{{- $store := newScratch -}}
|
|
{{- $allowlist := or (.keep) (slice "id" "class" "tabindex" "dir")}}
|
|
{{- range $key, $value := .attributes -}}
|
|
{{- if in $allowlist $key -}}
|
|
{{- $store.Set $key $value -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- range $key, $value := .set -}}
|
|
{{- $store.Set $key (print $value) -}}
|
|
{{- end -}}
|
|
|
|
{{- range $key, $value := .merge -}}
|
|
{{- $merged := (slice) | append $value | append (or (index $.attributes $key) (slice)) -}}
|
|
{{- $delimiter := or ($.delimiter) (" ") }}
|
|
{{- $store.Set $key (delimit $merged $delimiter) -}}
|
|
{{- end -}}
|
|
|
|
{{- range $key := .delete -}}
|
|
{{- $store.Delete $key -}}
|
|
{{- end -}}
|
|
|
|
{{- return $store.Values -}}
|