summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Mooring <joe.mooring@veriphor.com>2022-12-03 17:06:56 -0800
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2022-12-04 09:25:51 +0100
commit0b976d2b40fb3bc590f1cb01515116376bac0003 (patch)
treed79162f026e4aca01e1a0270c8d10771ccca3dbf
parenta49e51fd0b03c261358643fb6656257158d95520 (diff)
tpl/tplimpl: Allow alternate comment syntax
Allow alternate comment syntax before block definitions: {{/* foo */}} {{- /* foo */}} {{- /* foo */ -}} Fixes #10495
-rw-r--r--tpl/tplimpl/integration_test.go45
-rw-r--r--tpl/tplimpl/template.go6
2 files changed, 51 insertions, 0 deletions
diff --git a/tpl/tplimpl/integration_test.go b/tpl/tplimpl/integration_test.go
index 49722c5c1..4107a1faa 100644
--- a/tpl/tplimpl/integration_test.go
+++ b/tpl/tplimpl/integration_test.go
@@ -115,3 +115,48 @@ counter2: 3
`)
}
+
+// Issue 10495
+func TestCommentsBeforeBlockDefinition(t *testing.T) {
+ t.Parallel()
+
+ files := `
+-- config.toml --
+baseURL = 'http://example.com/'
+-- content/s1/p1.md --
+---
+title: "S1P1"
+---
+-- content/s2/p1.md --
+---
+title: "S2P1"
+---
+-- content/s3/p1.md --
+---
+title: "S3P1"
+---
+-- layouts/_default/baseof.html --
+{{ block "main" . }}{{ end }}
+-- layouts/s1/single.html --
+{{/* foo */}}
+{{ define "main" }}{{ .Title }}{{ end }}
+-- layouts/s2/single.html --
+{{- /* foo */}}
+{{ define "main" }}{{ .Title }}{{ end }}
+-- layouts/s3/single.html --
+{{- /* foo */ -}}
+{{ define "main" }}{{ .Title }}{{ end }}
+ `
+
+ b := hugolib.NewIntegrationTestBuilder(
+ hugolib.IntegrationTestConfig{
+ T: t,
+ TxtarString: files,
+ },
+ )
+ b.Build()
+
+ b.AssertFileContent("public/s1/p1/index.html", `S1P1`)
+ b.AssertFileContent("public/s2/p1/index.html", `S2P1`)
+ b.AssertFileContent("public/s3/p1/index.html", `S3P1`)
+}
diff --git a/tpl/tplimpl/template.go b/tpl/tplimpl/template.go
index 81c898b2f..9a9e82a80 100644
--- a/tpl/tplimpl/template.go
+++ b/tpl/tplimpl/template.go
@@ -91,9 +91,15 @@ func needsBaseTemplate(templ string) bool {
if !inComment && strings.HasPrefix(templ[i:], "{{/*") {
inComment = true
i += 4
+ } else if !inComment && strings.HasPrefix(templ[i:], "{{- /*") {
+ inComment = true
+ i += 6
} else if inComment && strings.HasPrefix(templ[i:], "*/}}") {
inComment = false
i += 4
+ } else if inComment && strings.HasPrefix(templ[i:], "*/ -}}") {
+ inComment = false
+ i += 6
} else {
r, size := utf8.DecodeRuneInString(templ[i:])
if !inComment {