diff options
author | Brendan Roy <br3ndanr@gmail.com> | 2017-09-30 13:00:19 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-10-03 08:59:51 +0300 |
commit | 4fc67fe44a3c65fc7faaed21d5fa5bb5f87edf2c (patch) | |
tree | 5b9562852eb01c76f31ca4651561785573a50b37 /tpl | |
parent | 47fdfd5196cd24a23b30afe1d88969ffb413ab59 (diff) |
tpl: Add errorf template function
Add template function that will build a string from the given format
string and arguments, then log it to ERROR. This has an intended
side-effect of causing the build to fail, when executed.
Resolves #3817
Diffstat (limited to 'tpl')
-rw-r--r-- | tpl/fmt/fmt.go | 9 | ||||
-rw-r--r-- | tpl/fmt/init.go | 8 |
2 files changed, 15 insertions, 2 deletions
diff --git a/tpl/fmt/fmt.go b/tpl/fmt/fmt.go index 96695442e..96113a598 100644 --- a/tpl/fmt/fmt.go +++ b/tpl/fmt/fmt.go @@ -15,15 +15,17 @@ package fmt import ( _fmt "fmt" + "github.com/gohugoio/hugo/helpers" ) // New returns a new instance of the fmt-namespaced template functions. func New() *Namespace { - return &Namespace{} + return &Namespace{helpers.NewDistinctErrorLogger()} } // Namespace provides template functions for the "fmt" namespace. type Namespace struct { + errorLogger *helpers.DistinctLogger } // Print returns string representation of the passed arguments. @@ -41,3 +43,8 @@ func (ns *Namespace) Printf(format string, a ...interface{}) string { func (ns *Namespace) Println(a ...interface{}) string { return _fmt.Sprintln(a...) } + +func (ns *Namespace) Errorf(format string, a ...interface{}) string { + ns.errorLogger.Printf(format, a...) + return _fmt.Sprintf(format, a...) +} diff --git a/tpl/fmt/init.go b/tpl/fmt/init.go index a3398b862..76c68957a 100644 --- a/tpl/fmt/init.go +++ b/tpl/fmt/init.go @@ -50,8 +50,14 @@ func init() { }, ) - return ns + ns.AddMethodMapping(ctx.Errorf, + []string{"errorf"}, + [][2]string{ + {`{{ errorf "%s." "failed" }}`, `failed.`}, + }, + ) + return ns } internal.AddTemplateFuncsNamespace(f) |