| 12345678910111213141516171819202122232425262728293031323334353637 | {{/* Function to return a linked social icon as a map from an iteration of an author's `social` data. */}}{{ $scr := newScratch }}{{/* Get icon name. */}}{{ $scr.SetInMap "social_link" "icon" .icon }}{{/* Get icon pack (default to Font Awesome's Solid pack). */}}{{ $pack := or .icon_pack "fas" }}{{ $scr.SetInMap "social_link" "icon_pack" $pack }}{{/* Derive Font Awesome class name prefix. */}}{{ $pack_prefix := $pack }}{{ if in (slice "fab" "fas" "far" "fal") $pack }}  {{ $pack_prefix = "fa" }}{{ end }}{{ $scr.SetInMap "social_link" "pack_prefix" $pack_prefix }}{{/* Get tooltip label (default to none). */}}{{ $scr.SetInMap "social_link" "tooltip" (.label | default "") }}{{/* Get screen reader label (default to icon name). */}}{{ $scr.SetInMap "social_link" "aria_label" (.label | default .icon) }}{{/* Get external link or relative internal link. */}}{{ $link := .link }}{{ $target := "" }}{{ $scheme := (urls.Parse $link).Scheme }}{{ if not $scheme }}  {{ $link = .link | relLangURL }}{{ else if in (slice "http" "https") $scheme }}  {{ $target = "target=\"_blank\" rel=\"noopener\"" }}{{ end }}{{ $scr.SetInMap "social_link" "link" $link }}{{ $scr.SetInMap "social_link" "target" $target }}{{ return $scr.Get "social_link" }}
 |