tpl/tplimpl: Resolve render hook destinations with leading ./

Closes #12514
This commit is contained in:
Joe Mooring 2024-05-17 15:41:18 -07:00 committed by Bjørn Erik Pedersen
parent 6b006616e5
commit b893a09aa6
3 changed files with 22 additions and 9 deletions

View file

@ -1,7 +1,8 @@
{{- $u := urls.Parse .Destination -}} {{- $u := urls.Parse .Destination -}}
{{- $src := $u.String -}} {{- $src := $u.String -}}
{{- if not $u.IsAbs -}} {{- if not $u.IsAbs -}}
{{- with or (.PageInner.Resources.Get $u.Path) (resources.Get $u.Path) -}} {{- $path := strings.TrimPrefix "./" $u.Path }}
{{- with or (.PageInner.Resources.Get $path) (resources.Get $path) -}}
{{- $src = .RelPermalink -}} {{- $src = .RelPermalink -}}
{{- with $u.RawQuery -}} {{- with $u.RawQuery -}}
{{- $src = printf "%s?%s" $src . -}} {{- $src = printf "%s?%s" $src . -}}

View file

@ -3,10 +3,11 @@
{{- if strings.HasPrefix $u.String "#" }} {{- if strings.HasPrefix $u.String "#" }}
{{- $href = printf "%s#%s" .PageInner.RelPermalink $u.Fragment }} {{- $href = printf "%s#%s" .PageInner.RelPermalink $u.Fragment }}
{{- else if not $u.IsAbs -}} {{- else if not $u.IsAbs -}}
{{- $path := strings.TrimPrefix "./" $u.Path }}
{{- with or {{- with or
($.PageInner.GetPage $u.Path) ($.PageInner.GetPage $path)
($.PageInner.Resources.Get $u.Path) ($.PageInner.Resources.Get $path)
(resources.Get $u.Path) (resources.Get $path)
-}} -}}
{{- $href = .RelPermalink -}} {{- $href = .RelPermalink -}}
{{- with $u.RawQuery -}} {{- with $u.RawQuery -}}

View file

@ -51,7 +51,8 @@ title: s1/p1
title: s1/p2 title: s1/p2
--- ---
[500](a.txt) // global resource [500](a.txt) // global resource
[600](b.txt) // page resource [510](b.txt) // page resource
[520](./b.txt) // page resource
-- content/s1/p2/b.txt -- -- content/s1/p2/b.txt --
irrelevant irrelevant
-- content/s1/p3.md -- -- content/s1/p3.md --
@ -125,12 +126,14 @@ title: s1/p3
b.AssertFileContent("public/s1/p2/index.html", b.AssertFileContent("public/s1/p2/index.html",
`<a href="/a.txt">500</a>`, `<a href="/a.txt">500</a>`,
`<a href="/s1/p2/b.txt">600</a>`, `<a href="/s1/p2/b.txt">510</a>`,
`<a href="/s1/p2/b.txt">520</a>`,
) )
} }
// Issue 12203 // Issue 12203
// Issue 12468 // Issue 12468
// Issue 12514
func TestEmbeddedImageRenderHook(t *testing.T) { func TestEmbeddedImageRenderHook(t *testing.T) {
t.Parallel() t.Parallel()
@ -145,7 +148,9 @@ block = false
[markup.goldmark.renderHooks.image] [markup.goldmark.renderHooks.image]
enableDefault = true enableDefault = true
-- content/p1/index.md -- -- content/p1/index.md --
![alt](pixel.png?a=b&c=d#fragment) ![alt1](./pixel.png)
![alt2](pixel.png?a=b&c=d#fragment)
{.foo #bar} {.foo #bar}
-- content/p1/pixel.png -- -- content/p1/pixel.png --
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==
@ -154,10 +159,16 @@ iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAA
` `
b := hugolib.Test(t, files) b := hugolib.Test(t, files)
b.AssertFileContent("public/p1/index.html", `<img alt="alt" src="/dir/p1/pixel.png?a=b&c=d#fragment">`) b.AssertFileContent("public/p1/index.html",
`<img alt="alt1" src="/dir/p1/pixel.png">`,
`<img alt="alt2" src="/dir/p1/pixel.png?a=b&c=d#fragment">`,
)
files = strings.Replace(files, "block = false", "block = true", -1) files = strings.Replace(files, "block = false", "block = true", -1)
b = hugolib.Test(t, files) b = hugolib.Test(t, files)
b.AssertFileContent("public/p1/index.html", `<img alt="alt" class="foo" id="bar" src="/dir/p1/pixel.png?a=b&c=d#fragment">`) b.AssertFileContent("public/p1/index.html",
`<img alt="alt1" src="/dir/p1/pixel.png">`,
`<img alt="alt2" class="foo" id="bar" src="/dir/p1/pixel.png?a=b&c=d#fragment">`,
)
} }