From e4fcb672ed8bae21fd9780292b54fea3040dd877 Mon Sep 17 00:00:00 2001 From: SatowTakeshi Date: Sun, 22 Nov 2020 02:58:26 +0900 Subject: [PATCH] resources: Preserve url set in frontmatter without sanitizing related #6007 (already closed) --- resources/page/page_paths.go | 16 ++++++++++------ resources/page/page_paths_test.go | 7 +++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/resources/page/page_paths.go b/resources/page/page_paths.go index 247c4dfcb..6ef9bced6 100644 --- a/resources/page/page_paths.go +++ b/resources/page/page_paths.go @@ -308,12 +308,16 @@ func CreateTargetPaths(d TargetPathDescriptor) (tp TargetPaths) { linkDir = strings.TrimSuffix(path.Join(slash, linkDir), slash) - // Note: MakePathSanitized will lower case the path if - // disablePathToLower isn't set. - pagePath = d.PathSpec.MakePathSanitized(pagePath) - pagePathDir = d.PathSpec.MakePathSanitized(pagePathDir) - link = d.PathSpec.MakePathSanitized(link) - linkDir = d.PathSpec.MakePathSanitized(linkDir) + // if page URL is explicitly set in frontmatter, + // preserve its value without sanitization + if d.Kind != KindPage || d.URL == "" { + // Note: MakePathSanitized will lower case the path if + // disablePathToLower isn't set. + pagePath = d.PathSpec.MakePathSanitized(pagePath) + pagePathDir = d.PathSpec.MakePathSanitized(pagePathDir) + link = d.PathSpec.MakePathSanitized(link) + linkDir = d.PathSpec.MakePathSanitized(linkDir) + } tp.TargetFilename = filepath.FromSlash(pagePath) tp.SubResourceBaseTarget = filepath.FromSlash(pagePathDir) diff --git a/resources/page/page_paths_test.go b/resources/page/page_paths_test.go index 63df48a99..53f8b80ef 100644 --- a/resources/page/page_paths_test.go +++ b/resources/page/page_paths_test.go @@ -129,6 +129,13 @@ func TestPageTargetPath(t *testing.T) { BaseName: "mypage", URL: "/some/other/path", Type: output.HTMLFormat}, TargetPaths{TargetFilename: "/some/other/path/index.html", SubResourceBaseTarget: "/some/other/path", Link: "/some/other/path/"}}, + { + "HTML page with URL containing double hyphen", TargetPathDescriptor{ + Kind: KindPage, + Dir: "/sect/", + BaseName: "mypage", + URL: "/some/other--url/", + Type: output.HTMLFormat}, TargetPaths{TargetFilename: "/some/other--url/index.html", SubResourceBaseTarget: "/some/other--url", Link: "/some/other--url/"}}, { "HTML page with expanded permalink", TargetPathDescriptor{ Kind: KindPage,