From 078fad49e2508759aa33995eb0a4464ce0a63595 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 12 Oct 2015 05:51:04 +0200 Subject: [PATCH] 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 --- hugolib/node.go | 12 ++++++++++++ hugolib/page.go | 15 +++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/hugolib/node.go b/hugolib/node.go index f8f8df594..dcbf0d146 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 e08e764af..2979822c3 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()