{{- /* 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 -}}