From 67f1ee07701aeaad20bde78b26823aa051c5365d Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 31 Oct 2022 11:11:34 -0400 Subject: [PATCH] Attempt to fix RSS encoding --- themes/red/layouts/_default/rss.xml | 8 ++++-- themes/red/layouts/partials/rss.html | 38 ++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 themes/red/layouts/partials/rss.html diff --git a/themes/red/layouts/_default/rss.xml b/themes/red/layouts/_default/rss.xml index 74c7afc..7cdd9d8 100644 --- a/themes/red/layouts/_default/rss.xml +++ b/themes/red/layouts/_default/rss.xml @@ -11,7 +11,10 @@ {{- $pages = $pages | first $limit -}} {{- end -}} {{- printf "" | safeHTML }} - + {{ .Site.Author.name }}'s blog {{ .Permalink }} @@ -31,7 +34,8 @@ {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} {{ with .Site.Author.email }}{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}} {{ .Permalink }} - {{ .Content | html }} + {{ " + {{ " {{ end }} diff --git a/themes/red/layouts/partials/rss.html b/themes/red/layouts/partials/rss.html new file mode 100644 index 0000000..da021ae --- /dev/null +++ b/themes/red/layouts/partials/rss.html @@ -0,0 +1,38 @@ + +{{ $html := .Content | safeHTML }} + +{{ $hrefs := findRE "href=\"([^\"]*)\"" $html }} +{{ range $href := $hrefs}} +{{ $absHref := strings.TrimPrefix "href=\"" $href }} +{{ $absHref = strings.TrimSuffix "\"" $absHref }} +{{ $absHref = printf "href=\"%s\"" ($absHref | absURL) }} +{{ $html = replace $html $href $absHref }} +{{ end }} + +{{ $srcs := findRE "src=\"([^\"]*)\"" $html }} +{{ range $src := $srcs}} +{{ $absSrc := strings.TrimPrefix "src=\"" $src }} +{{ $absSrc = strings.TrimSuffix "\"" $absSrc }} +{{ $absSrc = printf "src=\"%s\"" ($absSrc | absURL) }} +{{ $html = replace $html $src $absSrc }} +{{ end }} + +{{ $srcset := findRE "srcset=\"([^\"]*)\"" $html }} +{{ range $set := $srcset}} +{{ $parts := strings.TrimPrefix "srcset=\"" $set }} +{{ $parts = strings.TrimSuffix "\"" $parts }} +{{ $parts = split $parts "," }} +{{ $newSrcset := slice }} +{{ range $part := $parts }} +{{ $part = $part | replaceRE "^\\s*(.*)\\s*$" "$1" }} +{{ $lg := split $part " " }} +{{ $href := index $lg 0 | absURL }} +{{ $size := index $lg 1 }} +{{ $newSrcset = $newSrcset | append (printf "%s %s" $href $size) }} +{{ end }} +{{ $newSrcset = delimit $newSrcset ", " }} +{{ $newSrcset = printf "srcset=\"%s\"" $newSrcset }} +{{ $html = replace $html $set $newSrcset }} +{{ end }} + +{{ return $html }} \ No newline at end of file