{{ $dateFormat := .Site.Params.dateFormat | default ":date_long" -}}
{{/* user-overridable parameter $dateFormat is escaped pre-insertion so that HTML entities can be inserted */ -}}
{{ $nonBreakingPublishDate := .Page.PublishDate | time.Format $dateFormat | htmlEscape -}}
{{ $nonBreakingPublishDate = replace $nonBreakingPublishDate " " " " -}}
{{ $nonBreakingPublishDate = replace $nonBreakingPublishDate "-" "‑" -}}
{{/* user-overridable parameter $readingTime is escaped pre-insertion so that HTML entities can be inserted */ -}}
{{ $nonBreakingReadingTime := i18n "readingTime" .ReadingTime | htmlEscape -}}
{{ $nonBreakingReadingTime = replace $nonBreakingReadingTime " " " " -}}
{{ $nonBreakingReadingTime = replace $nonBreakingReadingTime "-" "‑" -}}
{{ $breakingTags := .Param (lower (i18n "tags")) -}}
{{ $nonBreakingTags := slice -}}
{{ range $breakingTags -}}
{{/* user-defined tags are escaped pre-insertion so that HTML entities can be inserted */ -}}
{{ $nonBreakingTag := htmlEscape . -}}
{{ $nonBreakingTag = replace $nonBreakingTag " " " " -}}
{{ $nonBreakingTag = replace $nonBreakingTag "-" "‑" -}}
{{ $nonBreakingTags = $nonBreakingTags | append $nonBreakingTag -}}
{{ end -}}
{{/* user-overridable parameter $audioAvailable is escaped pre-insertion so that HTML entities can be inserted */ -}}
{{ $nonBreakingAudioAvailable := i18n "audioAvailable" .Title | htmlEscape -}}
{{ $nonBreakingAudioAvailable = replace $nonBreakingAudioAvailable " " " " -}}
{{ $nonBreakingAudioAvailable = replace $nonBreakingAudioAvailable "-" "‑" -}}
{{ emojify ":calendar:" }} {{ emojify ":stopwatch:" }} {{ if where .Resources "MediaType.MainType" "audio" }}{{ emojify ":headphones:" }} {{ $nonBreakingAudioAvailable | safeHTML }}{{ end }}{{ if $nonBreakingTags }}{{ emojify ":label:" }} {{ range $key, $val := $nonBreakingTags }}{{ if $key }} {{ end }}{{ $val | safeHTML }}{{ end }}{{ end }}