{{- $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 -}}
{{- $image := false -}}
{{- if and (isset site.Params.site "offline") (eq $pageContext.Site.Params.site.offline false) -}}
{{- $image = resources.GetRemote $source -}}
{{- end -}}
{{- with $image -}}
{{- 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 -}}