tpl: Add a warnf template func
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 20 Dec 2019 19:46:17 +0000 (20:46 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 21 Dec 2019 09:23:00 +0000 (10:23 +0100)
Fixes #6628

docs/content/en/functions/errorf.md
docs/data/docs.json
tpl/fmt/fmt.go
tpl/fmt/init.go

index 73c13da09d30c3244f2374393b28301fcffc99cb..edc8e5755ac2d447ff333d1bc629f56552e69bd4 100644 (file)
@@ -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.
index a4c79ab16342966e39ec26c469d1f19fb9d572e6..7cdf8a405b1dc0ba98d4da165246306634ae8b48 100644 (file)
               "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": {
index 8b24648cbbd8f994a1ee8415b2ddfe46acb23c88..7e0258650b0cc45a862dd2f0017ffd60ffe2f7a8 100644 (file)
@@ -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 ""
+}
index 1170558010b45ce82faeeaf13f29409bede2f28a..14568b45ab905e992d590c8c17d7b8ce522f2047 100644 (file)
@@ -57,6 +57,12 @@ func init() {
                        },
                )
 
+               ns.AddMethodMapping(ctx.Warnf,
+                       []string{"warnf"},
+                       [][2]string{
+                               {`{{ warnf "%s." "warning" }}`, ``},
+                       },
+               )
                return ns
        }