mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-29 13:32:08 -05:00
Consolidate the Param methods
Maps in Viper, Hugo's config backing store, is now properly lower-cased not just on top level, the current situation. While this is mostly a good thing, as you don't need to know the original casing to look up a value, it will be breaking for people doing direct lookups in the ´Site.Params` map. We will try to find a solution to this "breakage", but the recommended method to get params values is via the `.Param` methods. This method is now implemented on `Node`, `Page` and `Site` and is case-insensitive: * Use `.Param "someKey" ` if you want page param with fall back to site param if not found on page. * Use `.Site.Param "someKey"` to get a site param See #2590
This commit is contained in:
parent
faa64abdc2
commit
58f31d2769
3 changed files with 17 additions and 9 deletions
|
@ -24,8 +24,6 @@ import (
|
||||||
jww "github.com/spf13/jwalterweatherman"
|
jww "github.com/spf13/jwalterweatherman"
|
||||||
|
|
||||||
"github.com/spf13/hugo/helpers"
|
"github.com/spf13/hugo/helpers"
|
||||||
|
|
||||||
"github.com/spf13/cast"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Node struct {
|
type Node struct {
|
||||||
|
@ -124,13 +122,9 @@ func (n *Node) IsMenuCurrent(menuID string, inme *MenuEntry) bool {
|
||||||
|
|
||||||
// Param is a convenience method to do lookups in Site's Params map.
|
// Param is a convenience method to do lookups in Site's Params map.
|
||||||
//
|
//
|
||||||
// This method is also implemented on Page.
|
// This method is also implemented on Page and SiteInfo.
|
||||||
func (n *Node) Param(key interface{}) (interface{}, error) {
|
func (n *Node) Param(key interface{}) (interface{}, error) {
|
||||||
keyStr, err := cast.ToStringE(key)
|
return n.Site.Param(key)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return n.Site.Params[keyStr], err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *Node) Hugo() *HugoInfo {
|
func (n *Node) Hugo() *HugoInfo {
|
||||||
|
|
|
@ -194,12 +194,13 @@ func (p *Page) IsPage() bool {
|
||||||
// Param is a convenience method to do lookups in Page's and Site's Params map,
|
// Param is a convenience method to do lookups in Page's and Site's Params map,
|
||||||
// in that order.
|
// in that order.
|
||||||
//
|
//
|
||||||
// This method is also implemented on Node.
|
// This method is also implemented on Node and SiteInfo.
|
||||||
func (p *Page) Param(key interface{}) (interface{}, error) {
|
func (p *Page) Param(key interface{}) (interface{}, error) {
|
||||||
keyStr, err := cast.ToStringE(key)
|
keyStr, err := cast.ToStringE(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
keyStr = strings.ToLower(keyStr)
|
||||||
if val, ok := p.Params[keyStr]; ok {
|
if val, ok := p.Params[keyStr]; ok {
|
||||||
return val, nil
|
return val, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -223,8 +223,21 @@ func newSiteInfoDefaultLanguage(baseURL string, pages ...*Page) *SiteInfo {
|
||||||
// linkedin
|
// linkedin
|
||||||
type SiteSocial map[string]string
|
type SiteSocial map[string]string
|
||||||
|
|
||||||
|
// Param is a convenience method to do lookups in Site's Params map.
|
||||||
|
//
|
||||||
|
// This method is also implemented on Page and Node.
|
||||||
|
func (s *SiteInfo) Param(key interface{}) (interface{}, error) {
|
||||||
|
keyStr, err := cast.ToStringE(key)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
keyStr = strings.ToLower(keyStr)
|
||||||
|
return s.Params[keyStr], nil
|
||||||
|
}
|
||||||
|
|
||||||
// GetParam gets a site parameter value if found, nil if not.
|
// GetParam gets a site parameter value if found, nil if not.
|
||||||
func (s *SiteInfo) GetParam(key string) interface{} {
|
func (s *SiteInfo) GetParam(key string) interface{} {
|
||||||
|
helpers.Deprecated("SiteInfo", ".GetParam", ".Param")
|
||||||
v := s.Params[strings.ToLower(key)]
|
v := s.Params[strings.ToLower(key)]
|
||||||
|
|
||||||
if v == nil {
|
if v == nil {
|
||||||
|
|
Loading…
Reference in a new issue