{{- $pageContext := .Context -}} {{- $data := dict -}} {{- $source := or .Source "nil" -}} {{- $fit := .Fit -}} {{- $resize := .Resize -}} {{- $target := or .Target "/" -}} {{- $copy := .Copy -}} {{- $directory := path.Dir $copy -}} {{- $basename := path.BaseName $copy -}} {{- $type := strings.TrimPrefix "." (path.Ext $copy) -}} {{- $alternateCopy := or .AlternateCopy (print $directory "/" $basename ".webp") -}} {{- $alternateType := strings.TrimPrefix "." (path.Ext $alternateCopy) -}} {{- $isFile := ne (path.Base $copy) "." -}} {{- $cached := and $isFile (fileExists (print "public/" $copy)) (fileExists (print "public/" $alternateCopy)) -}} {{- $local := print "public/" $source -}} {{- $localized := fileExists $local -}} {{- with $404image := resources.Get "data/media/404.png" -}} {{- $404image = .Content | resources.FromString (print $target (path.Base .)) -}} {{- $data = (dict "Width" $404image.Width "Height" $404image.Height "Permalink" $404image.Permalink "RelPermalink" $404image.RelPermalink ) -}} {{- end -}} {{- if $cached -}} {{- with $image := resources.Get (print "public/" $copy) -}} {{- $image = .Content | resources.FromString (print $target (path.Base .)) -}} {{- $data = (dict "Width" $image.Width "Height" $image.Height "Permalink" $image.Permalink "RelPermalink" $image.RelPermalink ) -}} {{- $image = resources.Get (print "public/" $alternateCopy) -}} {{- $image = .Content | resources.FromString (print $target (path.Base $image)) -}} {{- $data = merge $data (dict "AltPermalink" $image.Permalink "AltRelPermalink" $image.RelPermalink ) -}} {{- end -}} {{- else -}} {{- with $image := cond (default true $pageContext.Site.Params.site.offline) false (resources.GetRemote $source) -}} {{- with .Err -}} {{- if $localized -}} {{- $directory := path.Dir $local -}} {{- $basename := path.BaseName $local -}} {{- $type := strings.TrimPrefix "." (path.Ext $local) -}} {{- with $image := resources.Get $local -}} {{- $image = .Content | resources.FromString (print $target (path.Base .)) -}} {{- with $fit -}} {{- $image = $image.Fit (print $fit " " $type) -}} {{- end -}} {{- with $resize -}} {{- $image = $image.Resize (print $resize " " $type) -}} {{- end -}} {{- $image = $image | resources.Copy $copy -}} {{- $data = (dict "Width" $image.Width "Height" $image.Height "Permalink" $image.Permalink "RelPermalink" $image.RelPermalink ) -}} {{- $image = .Content | resources.FromString (print $target (path.Base .)) -}} {{- with $fit -}} {{- $image = $image.Fit (print $fit " " $alternateType) -}} {{- end -}} {{- with $resize -}} {{- $image = $image.Resize (print $resize " " $alternateType) -}} {{- end -}} {{- $image = $image | resources.Copy $alternateCopy -}} {{- $data = merge $data (dict "AltPermalink" $image.Permalink "AltRelPermalink" $image.RelPermalink ) -}} {{- end -}} {{- end -}} {{- else -}} {{- $image = .Content | resources.FromString (print $target (path.Base .)) -}} {{- with $fit -}} {{- $image = $image.Fit (print $fit " " $type) -}} {{- end -}} {{- with $resize -}} {{- $image = $image.Resize (print $resize " " $type) -}} {{- end -}} {{- $image = $image | resources.Copy $copy -}} {{- $data = (dict "Width" $image.Width "Height" $image.Height "Permalink" $image.Permalink "RelPermalink" $image.RelPermalink ) -}} {{- $image = .Content | resources.FromString (print $target (path.Base .)) -}} {{- with $fit -}} {{- $image = $image.Fit (print $fit " " $alternateType) -}} {{- end -}} {{- with $resize -}} {{- $image = $image.Resize (print $resize " " $alternateType) -}} {{- end -}} {{- $image = $image | resources.Copy $alternateCopy -}} {{- $data = merge $data (dict "AltPermalink" $image.Permalink "AltRelPermalink" $image.RelPermalink ) -}} {{- end -}} {{- end -}} {{- end -}} {{- return $data -}}