hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 1773d71d5b40f5a6a14edca417d2818607a499f1
parent 8a58ebb311fd079f65068e7e37725e4d43f17ab5
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Fri, 20 Dec 2019 20:46:17 +0100

tpl: Add a warnf template func

Fixes #6628

Diffstat:
Mdocs/content/en/functions/errorf.md | 17+++++++++++------
Mdocs/data/docs.json | 16++++++++++++++++
Mtpl/fmt/fmt.go | 13++++++++++++-
Mtpl/fmt/init.go | 6++++++
4 files changed, 45 insertions(+), 7 deletions(-)
diff --git a/docs/content/en/functions/errorf.md b/docs/content/en/functions/errorf.md
@@ -1,7 +1,6 @@
 ---
-title: errorf
-linktitle: errorf
-description: Log ERROR and fail the build from the templates.
+title: errorf and warnf
+description: Log ERROR or WARNING from the templates.
 date: 2017-09-30
 publishdate: 2017-09-30
 lastmod: 2017-09-30
@@ -18,12 +17,18 @@ deprecated: false
 aliases: []
 ---
 
-`errorf` will evaluate a format string, then output the result to the ERROR log (and only once per error message to avoid flooding the log).
+`errorf` or `warnf` will evaluate a format string, then output the result to the ERROR or WARNING log (and only once per error message to avoid flooding the log).
 
-This will also cause the build to fail (the `hugo` command will `exit -1`).
+Any ERROR will also cause the build to fail (the `hugo` command will `exit -1`).
+
+Note that the WARNING will only be printed to the console.
 
 ```
 {{ errorf "Failed to handle page %q" .Path }}
 ```
 
-Note that `errorf` supports all the formatting verbs of the [fmt](https://golang.org/pkg/fmt/) package.
+```
+{{ warnf "You should update the shortcodes in %q" .Path }}
+```
+
+Note that `errorf` and `warnf` support all the formatting verbs of the [fmt](https://golang.org/pkg/fmt/) package.
diff --git a/docs/data/docs.json b/docs/data/docs.json
@@ -3053,6 +3053,22 @@
               "works!\n"
             ]
           ]
+        },
+        "Warnf": {
+          "Description": "Warnf formats according to a format specifier and logs a WARNING.\nIt returns an empty string.",
+          "Args": [
+            "format",
+            "a"
+          ],
+          "Aliases": [
+            "warnf"
+          ],
+          "Examples": [
+            [
+              "{{ warnf \"%s.\" \"warning\" }}",
+              ""
+            ]
+          ]
         }
       },
       "hugo": {
diff --git a/tpl/fmt/fmt.go b/tpl/fmt/fmt.go
@@ -23,12 +23,16 @@ import (
 
 // New returns a new instance of the fmt-namespaced template functions.
 func New(d *deps.Deps) *Namespace {
-	return &Namespace{helpers.NewDistinctLogger(d.Log.ERROR)}
+	return &Namespace{
+		errorLogger: helpers.NewDistinctLogger(d.Log.ERROR),
+		warnLogger:  helpers.NewDistinctLogger(d.Log.WARN),
+	}
 }
 
 // Namespace provides template functions for the "fmt" namespace.
 type Namespace struct {
 	errorLogger *helpers.DistinctLogger
+	warnLogger  *helpers.DistinctLogger
 }
 
 // Print returns string representation of the passed arguments.
@@ -53,3 +57,10 @@ func (ns *Namespace) Errorf(format string, a ...interface{}) string {
 	ns.errorLogger.Printf(format, a...)
 	return _fmt.Sprintf(format, a...)
 }
+
+// Warnf formats according to a format specifier and logs a WARNING.
+// It returns an empty string.
+func (ns *Namespace) Warnf(format string, a ...interface{}) string {
+	ns.warnLogger.Printf(format, a...)
+	return ""
+}
diff --git a/tpl/fmt/init.go b/tpl/fmt/init.go
@@ -57,6 +57,12 @@ func init() {
 			},
 		)
 
+		ns.AddMethodMapping(ctx.Warnf,
+			[]string{"warnf"},
+			[][2]string{
+				{`{{ warnf "%s." "warning" }}`, ``},
+			},
+		)
 		return ns
 	}