diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-11-21 21:59:38 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-11-22 18:41:50 +0100 |
commit | a3fe5e5e35f311f22b6b4fc38abfcf64cd2c7d6f (patch) | |
tree | 06cf1f647ae026b4fb3053c85370c2b203c7a089 /resources | |
parent | cd07e6d57b158a76f812e8c4c9567dbc84f57939 (diff) |
Fix Params case handling in the index, sort and where func
This means that you can now do:
```
{{ range where .Site.Pages "Params.MYPARAM" "foo" }}
```
Diffstat (limited to 'resources')
-rw-r--r-- | resources/page/page_nop.go | 2 | ||||
-rw-r--r-- | resources/page/site.go | 6 | ||||
-rw-r--r-- | resources/page/testhelpers_test.go | 2 | ||||
-rw-r--r-- | resources/resource.go | 4 | ||||
-rw-r--r-- | resources/resource/params.go | 6 | ||||
-rw-r--r-- | resources/resource/resourcetypes.go | 3 | ||||
-rw-r--r-- | resources/resource_metadata.go | 2 | ||||
-rw-r--r-- | resources/transform.go | 6 |
8 files changed, 19 insertions, 12 deletions
diff --git a/resources/page/page_nop.go b/resources/page/page_nop.go index ea1a44d8f..09ac136fc 100644 --- a/resources/page/page_nop.go +++ b/resources/page/page_nop.go @@ -300,7 +300,7 @@ func (p *nopPage) Param(key interface{}) (interface{}, error) { return nil, nil } -func (p *nopPage) Params() map[string]interface{} { +func (p *nopPage) Params() maps.Params { return nil } diff --git a/resources/page/site.go b/resources/page/site.go index 9153c8556..31058637b 100644 --- a/resources/page/site.go +++ b/resources/page/site.go @@ -17,6 +17,8 @@ import ( "html/template" "time" + "github.com/gohugoio/hugo/common/maps" + "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/common/hugo" @@ -39,7 +41,7 @@ type Site interface { Taxonomies() interface{} LastChange() time.Time Menus() navigation.Menus - Params() map[string]interface{} + Params() maps.Params Data() map[string]interface{} } @@ -107,7 +109,7 @@ func (t testSite) BaseURL() template.URL { return "" } -func (t testSite) Params() map[string]interface{} { +func (t testSite) Params() maps.Params { return nil } diff --git a/resources/page/testhelpers_test.go b/resources/page/testhelpers_test.go index 560166b0b..cc6a74f06 100644 --- a/resources/page/testhelpers_test.go +++ b/resources/page/testhelpers_test.go @@ -370,7 +370,7 @@ func (p *testPage) Param(key interface{}) (interface{}, error) { return resource.Param(p, nil, key) } -func (p *testPage) Params() map[string]interface{} { +func (p *testPage) Params() maps.Params { return p.params } diff --git a/resources/resource.go b/resources/resource.go index acf8e37c0..d206c17b5 100644 --- a/resources/resource.go +++ b/resources/resource.go @@ -30,9 +30,9 @@ import ( "github.com/pkg/errors" "github.com/gohugoio/hugo/common/hugio" + "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/resources/resource" - "github.com/spf13/afero" "github.com/gohugoio/hugo/helpers" @@ -228,7 +228,7 @@ func (l *genericResource) Name() string { return l.name } -func (l *genericResource) Params() map[string]interface{} { +func (l *genericResource) Params() maps.Params { return l.params } diff --git a/resources/resource/params.go b/resources/resource/params.go index 4cb41715d..89da718ec 100644 --- a/resources/resource/params.go +++ b/resources/resource/params.go @@ -19,12 +19,16 @@ import ( "github.com/spf13/cast" ) -func Param(r ResourceParamsProvider, fallback map[string]interface{}, key interface{}) (interface{}, error) { +func Param(r ResourceParamsProvider, fallback maps.Params, key interface{}) (interface{}, error) { keyStr, err := cast.ToStringE(key) if err != nil { return nil, err } + if fallback == nil { + return maps.GetNestedParam(keyStr, ".", r.Params()) + } + return maps.GetNestedParam(keyStr, ".", r.Params(), fallback) } diff --git a/resources/resource/resourcetypes.go b/resources/resource/resourcetypes.go index 7a055b25d..b525d7d55 100644 --- a/resources/resource/resourcetypes.go +++ b/resources/resource/resourcetypes.go @@ -14,6 +14,7 @@ package resource import ( + "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/langs" "github.com/gohugoio/hugo/media" "github.com/gohugoio/hugo/resources/images/exif" @@ -85,7 +86,7 @@ type ResourceMetaProvider interface { type ResourceParamsProvider interface { // Params set in front matter for this resource. - Params() map[string]interface{} + Params() maps.Params } type ResourceDataProvider interface { diff --git a/resources/resource_metadata.go b/resources/resource_metadata.go index ce17df022..7bf7479a3 100644 --- a/resources/resource_metadata.go +++ b/resources/resource_metadata.go @@ -129,7 +129,7 @@ func AssignMetadata(metadata []map[string]interface{}, resources ...resource.Res params, found := meta["params"] if found { - m := cast.ToStringMap(params) + m := maps.ToStringMap(params) // Needed for case insensitive fetching of params values maps.ToLower(m) ma.updateParams(m) diff --git a/resources/transform.go b/resources/transform.go index ee4912a10..0e44c6bbc 100644 --- a/resources/transform.go +++ b/resources/transform.go @@ -26,11 +26,11 @@ import ( bp "github.com/gohugoio/hugo/bufferpool" - "github.com/gohugoio/hugo/resources/internal" - "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/hugio" + "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/helpers" + "github.com/gohugoio/hugo/resources/internal" "github.com/gohugoio/hugo/resources/resource" "github.com/gohugoio/hugo/media" @@ -200,7 +200,7 @@ func (r *resourceAdapter) Name() string { return r.target.Name() } -func (r *resourceAdapter) Params() map[string]interface{} { +func (r *resourceAdapter) Params() maps.Params { r.init(false, false) return r.target.Params() } |