From: Bjørn Erik Pedersen Date: Mon, 12 Oct 2015 03:51:04 +0000 (+0200) Subject: Add Param(key) to Node and Page X-Git-Tag: v0.15~122 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=078fad49e2508759aa33995eb0a4464ce0a63595;p=brevno-suite%2Fhugo Add Param(key) to Node and Page This is a convenience method to do lookups in Page's (Page only) and Site's Params map (Page and Node), in that order. Fixes #1462 --- diff --git a/hugolib/node.go b/hugolib/node.go index f8f8df59..dcbf0d14 100644 --- a/hugolib/node.go +++ b/hugolib/node.go @@ -14,6 +14,7 @@ package hugolib import ( + "github.com/spf13/cast" "html/template" "sync" "time" @@ -86,6 +87,17 @@ func (n *Node) IsMenuCurrent(menuID string, inme *MenuEntry) bool { return false } +// Param is a convenience method to do lookups in Site's Params map. +// +// This method is also implemented on Page. +func (n *Node) Param(key interface{}) (interface{}, error) { + keyStr, err := cast.ToStringE(key) + if err != nil { + return nil, err + } + return n.Site.Params[keyStr], err +} + func (n *Node) Hugo() *HugoInfo { return hugoInfo } diff --git a/hugolib/page.go b/hugolib/page.go index e08e764a..2979822c 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -132,6 +132,21 @@ func (p *Page) IsPage() bool { return true } +// Param is a convenience method to do lookups in Page's and Site's Params map, +// in that order. +// +// This method is also implemented on Node. +func (p *Page) Param(key interface{}) (interface{}, error) { + keyStr, err := cast.ToStringE(key) + if err != nil { + return nil, err + } + if val, ok := p.Params[keyStr]; ok { + return val, nil + } + return p.Site.Params[keyStr], nil +} + func (p *Page) Author() Author { authors := p.Authors()