{{ $registry := .Site.Data.registry -}} {{ $registryUrl := .Page.RelPermalink -}} {{ $languageNames := newScratch -}} {{ $languageNames.Set "cpp" "C++" -}} {{ $languageNames.Set "dotnet" ".NET" -}} {{ $languageNames.Set "js" "JavaScript" -}} {{ $languageNames.Set "php" "PHP" -}} {{ $officialLanguages := slice "collector" "cpp" "erlang" "elixir" "dotnet" "go" "java" "js" "php" "python" "ruby" "rust" "swift" -}} {{ $langs := slice -}} {{ range $registry -}} {{ $language := .language -}} {{- $val := (dict "name" .language "isOfficial" (in $officialLanguages .language) ) -}} {{ $langs = $langs | append $val -}} {{ if ne $language (lower $language) -}} {{ errorf "Language keys must be in lowercase. Registry entry '%s' has the following invalid key: %s" .title $language -}} {{ end -}} {{ end -}} {{ $langs = sort ($langs | uniq) "name" -}} {{ $types := slice -}} {{ range $registry -}} {{ $type := .registryType -}} {{ $types = $types | append $type -}} {{ if ne $type (lower $type) -}} {{ errorf "Component-type keys must be in lowercase. Registry entry '%s' has the following invalid key: %s" .title $type -}} {{ end -}} {{ end -}} {{ $types = $types | uniq | sort -}} {{ $counter := 0 -}} {{ $entries := slice -}} {{ range $key, $entry := .Site.Data.registry -}} {{ $flags := slice -}} {{ if .isNative -}} {{ $flags = $flags | append "native" -}} {{ end -}} {{ if .isFirstParty -}} {{ $flags = $flags | append "first_party" -}} {{ end -}} {{ if .isNew -}} {{ $flags = $flags | append "new" -}} {{ end -}} {{ if .usedInDemo -}} {{ $flags = $flags | append "used_in_demo" -}} {{ end -}} {{ if .deprecated -}} {{ $flags = $flags | append "deprecated" -}} {{ end -}} {{ $entry = merge $entry (dict "_key" $key "id" $counter "flags" $flags) -}} {{ $entries = $entries | append $entry -}} {{ $counter = add $counter 1 }} {{ end -}} {{ $allFlags := slice -}} {{ range $entry := $entries -}} {{ range $flag := $entry.flags -}} {{ $allFlags = $allFlags | append $flag }} {{ end -}} {{ end -}} {{ $uniqueFlags := $allFlags | uniq | sort }}