From b893a09aa62c01a62e32b0effdb02e86b51d46d6 Mon Sep 17 00:00:00 2001 From: Joe Mooring Date: Fri, 17 May 2024 15:41:18 -0700 Subject: [PATCH] tpl/tplimpl: Resolve render hook destinations with leading ./ Closes #12514 --- .../_default/_markup/render-image.html | 3 ++- .../_default/_markup/render-link.html | 7 ++++--- tpl/tplimpl/render_hook_integration_test.go | 21 ++++++++++++++----- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/tpl/tplimpl/embedded/templates/_default/_markup/render-image.html b/tpl/tplimpl/embedded/templates/_default/_markup/render-image.html index 31437cdd4..89514cb83 100644 --- a/tpl/tplimpl/embedded/templates/_default/_markup/render-image.html +++ b/tpl/tplimpl/embedded/templates/_default/_markup/render-image.html @@ -1,7 +1,8 @@ {{- $u := urls.Parse .Destination -}} {{- $src := $u.String -}} {{- 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 -}} {{- with $u.RawQuery -}} {{- $src = printf "%s?%s" $src . -}} diff --git a/tpl/tplimpl/embedded/templates/_default/_markup/render-link.html b/tpl/tplimpl/embedded/templates/_default/_markup/render-link.html index 30e4d2660..daf3f11e1 100644 --- a/tpl/tplimpl/embedded/templates/_default/_markup/render-link.html +++ b/tpl/tplimpl/embedded/templates/_default/_markup/render-link.html @@ -3,10 +3,11 @@ {{- if strings.HasPrefix $u.String "#" }} {{- $href = printf "%s#%s" .PageInner.RelPermalink $u.Fragment }} {{- else if not $u.IsAbs -}} + {{- $path := strings.TrimPrefix "./" $u.Path }} {{- with or - ($.PageInner.GetPage $u.Path) - ($.PageInner.Resources.Get $u.Path) - (resources.Get $u.Path) + ($.PageInner.GetPage $path) + ($.PageInner.Resources.Get $path) + (resources.Get $path) -}} {{- $href = .RelPermalink -}} {{- with $u.RawQuery -}} diff --git a/tpl/tplimpl/render_hook_integration_test.go b/tpl/tplimpl/render_hook_integration_test.go index f6cb5bf6b..b91358227 100644 --- a/tpl/tplimpl/render_hook_integration_test.go +++ b/tpl/tplimpl/render_hook_integration_test.go @@ -51,7 +51,8 @@ title: s1/p1 title: s1/p2 --- [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 -- irrelevant -- content/s1/p3.md -- @@ -125,12 +126,14 @@ title: s1/p3 b.AssertFileContent("public/s1/p2/index.html", `500`, - `600`, + `510`, + `520`, ) } // Issue 12203 // Issue 12468 +// Issue 12514 func TestEmbeddedImageRenderHook(t *testing.T) { t.Parallel() @@ -145,7 +148,9 @@ block = false [markup.goldmark.renderHooks.image] enableDefault = true -- 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} -- content/p1/pixel.png -- iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg== @@ -154,10 +159,16 @@ iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAA ` b := hugolib.Test(t, files) - b.AssertFileContent("public/p1/index.html", `alt`) + b.AssertFileContent("public/p1/index.html", + `alt1`, + `alt2`, + ) files = strings.Replace(files, "block = false", "block = true", -1) b = hugolib.Test(t, files) - b.AssertFileContent("public/p1/index.html", `alt`) + b.AssertFileContent("public/p1/index.html", + `alt1`, + `alt2`, + ) }