summaryrefslogtreecommitdiffstats
path: root/tpl
diff options
context:
space:
mode:
authorJoe Mooring <joe.mooring@veriphor.com>2023-09-26 13:49:44 -0700
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2023-09-27 17:34:13 +0200
commit75f56b4ce6bff053cb212bfadf8afd3fc01718d4 (patch)
treee3b2dc3ddeaecb2e5d9177fccf8d773ca11f1668 /tpl
parentd234a963eb4d4e713751f65bfb3a65e930400dbe (diff)
tpl/collections: Fix and deprecate echoParams
Fixes #11498
Diffstat (limited to 'tpl')
-rw-r--r--tpl/collections/collections.go7
-rw-r--r--tpl/collections/integration_test.go34
2 files changed, 40 insertions, 1 deletions
diff --git a/tpl/collections/collections.go b/tpl/collections/collections.go
index 92aa2b9e6..2f7eb745b 100644
--- a/tpl/collections/collections.go
+++ b/tpl/collections/collections.go
@@ -31,6 +31,7 @@ import (
"github.com/gohugoio/hugo/common/maps"
"github.com/gohugoio/hugo/common/types"
"github.com/gohugoio/hugo/deps"
+ "github.com/gohugoio/hugo/helpers"
"github.com/gohugoio/hugo/langs"
"github.com/gohugoio/hugo/tpl/compare"
"github.com/spf13/cast"
@@ -195,9 +196,11 @@ func (ns *Namespace) Dictionary(values ...any) (map[string]any, error) {
return root, nil
}
-// EchoParam returns a the value in the collection c with key k if is set; otherwise, it returns an
+// EchoParam returns the value in the collection c with key k if is set; otherwise, it returns an
// empty string.
+// Deprecated: Use the index function instead.
func (ns *Namespace) EchoParam(c, k any) any {
+ helpers.Deprecated("collections.EchoParam", "Use the index function instead.", false)
av, isNil := indirect(reflect.ValueOf(c))
if isNil {
return ""
@@ -233,6 +236,8 @@ func (ns *Namespace) EchoParam(c, k any) any {
return avv.Float()
case reflect.String:
return avv.String()
+ case reflect.Bool:
+ return avv.Bool()
}
}
diff --git a/tpl/collections/integration_test.go b/tpl/collections/integration_test.go
index a059bfd26..a443755f8 100644
--- a/tpl/collections/integration_test.go
+++ b/tpl/collections/integration_test.go
@@ -231,3 +231,37 @@ foo: bc
).Build()
b.AssertFileContent("public/index.html", "<ul><li>P1</li><li>P2</li></ul>")
}
+
+// Issue #11498
+func TestEchoParams(t *testing.T) {
+ t.Parallel()
+ files := `
+-- hugo.toml --
+[params.footer]
+string = 'foo'
+int = 42
+float = 3.1415
+boolt = true
+boolf = false
+-- layouts/index.html --
+{{ echoParam .Site.Params.footer "string" }}
+{{ echoParam .Site.Params.footer "int" }}
+{{ echoParam .Site.Params.footer "float" }}
+{{ echoParam .Site.Params.footer "boolt" }}
+{{ echoParam .Site.Params.footer "boolf" }}
+ `
+
+ b := hugolib.NewIntegrationTestBuilder(
+ hugolib.IntegrationTestConfig{
+ T: t,
+ TxtarString: files,
+ },
+ ).Build()
+ b.AssertFileContent("public/index.html",
+ "foo",
+ "42",
+ "3.1415",
+ "true",
+ "false",
+ )
+}