]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix permalinks issue with repeated sections
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 17 Jan 2023 10:00:38 +0000 (11:00 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 17 Jan 2023 11:49:16 +0000 (12:49 +0100)
Fixes #10377

resources/page/integration_test.go
resources/page/permalinks.go
resources/page/permalinks_test.go

index 9dc322b4a5ed9eadc22c7a13f269ff3fe2f41884..0761de2499db2c71ef7c88806b96601522c59037 100644 (file)
@@ -136,3 +136,42 @@ Sort: [éclair emma xylophone zulu]
 ByWeight: alpha|émotion|zulu|
 `)
 }
+
+// See #10377
+func TestPermalinkExpansionSectionsRepeated(t *testing.T) {
+       t.Parallel()
+
+       files := `
+-- hugo.toml --
+disableKinds = ["home", "taxonomy", "taxonomyTerm", "sitemap"]
+[outputs]
+home = ["HTML"]
+page = ["HTML"]
+section = ["HTML"]
+[outputFormats]
+[permalinks]
+posts = '/:sections[1]/:sections[last]/:slug'
+-- content/posts/_index.md --
+-- content/posts/a/_index.md --
+-- content/posts/a/b/_index.md --
+-- content/posts/a/b/c/_index.md --
+-- content/posts/a/b/c/d.md --
+---
+title: "D"
+slug: "d"
+---
+D
+-- layouts/_default/single.html --
+RelPermalink: {{ .RelPermalink }}
+
+`
+
+       b := hugolib.NewIntegrationTestBuilder(
+               hugolib.IntegrationTestConfig{
+                       T:           t,
+                       TxtarString: files,
+               }).Build()
+
+       b.AssertFileContent("public/a/c/d/index.html", "RelPermalink: /a/c/d/")
+
+}
index c31d22a3c67189e367480bc1d8cee2e4df72b088..dbf10220c1929c121f8cdba6070b3c9c706be43d 100644 (file)
@@ -176,7 +176,7 @@ func (l PermalinkExpander) parse(patterns map[string]string) (map[string]func(Pa
 // can return a string to go in that position in the page (or an error)
 type pageToPermaAttribute func(Page, string) (string, error)
 
-var attributeRegexp = regexp.MustCompile(`:\w+(\[.+\])?`)
+var attributeRegexp = regexp.MustCompile(`:\w+(\[.+?\])?`)
 
 // validate determines if a PathPattern is well-formed
 func (l PermalinkExpander) validate(pp string) bool {
index 7baf165037015a39ec8e9bff122e414fd7148abf..07333492fc185fb6cfb3f77c1381e82c394effd9 100644 (file)
@@ -42,6 +42,7 @@ var testdataPermalinks = []struct {
        {"/:2006_01_02_15_04_05.000", true, "/2012_04_06_03_01_59.000"}, // Complicated custom date format
        {"/:sections/", true, "/a/b/c/"},                                // Sections
        {"/:sections[last]/", true, "/c/"},                              // Sections
+       {"/:sections[0]/:sections[last]/", true, "/a/c/"},               // Sections
 
        // Failures
        {"/blog/:fred", false, ""},