| 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" }}
 
 
  |