{{ $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 }}