hugo

Fork of github.com/gohugoio/hugo with reverse pagination support

git clone git://git.shimmy1996.com/hugo.git

fmt.go (2639B)

    1 // Copyright 2017 The Hugo Authors. All rights reserved.
    2 //
    3 // Licensed under the Apache License, Version 2.0 (the "License");
    4 // you may not use this file except in compliance with the License.
    5 // You may obtain a copy of the License at
    6 // http://www.apache.org/licenses/LICENSE-2.0
    7 //
    8 // Unless required by applicable law or agreed to in writing, software
    9 // distributed under the License is distributed on an "AS IS" BASIS,
   10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   11 // See the License for the specific language governing permissions and
   12 // limitations under the License.
   13 
   14 // Package fmt provides template functions for formatting strings.
   15 package fmt
   16 
   17 import (
   18 	_fmt "fmt"
   19 
   20 	"github.com/gohugoio/hugo/common/loggers"
   21 
   22 	"github.com/gohugoio/hugo/deps"
   23 	"github.com/gohugoio/hugo/helpers"
   24 )
   25 
   26 // New returns a new instance of the fmt-namespaced template functions.
   27 func New(d *deps.Deps) *Namespace {
   28 	ignorableLogger, ok := d.Log.(loggers.IgnorableLogger)
   29 	if !ok {
   30 		ignorableLogger = loggers.NewIgnorableLogger(d.Log)
   31 	}
   32 
   33 	distinctLogger := helpers.NewDistinctLogger(d.Log)
   34 	ns := &Namespace{
   35 		distinctLogger: ignorableLogger.Apply(distinctLogger),
   36 	}
   37 
   38 	d.BuildStartListeners.Add(func() {
   39 		ns.distinctLogger.Reset()
   40 	})
   41 
   42 	return ns
   43 }
   44 
   45 // Namespace provides template functions for the "fmt" namespace.
   46 type Namespace struct {
   47 	distinctLogger loggers.IgnorableLogger
   48 }
   49 
   50 // Print returns a string representation args.
   51 func (ns *Namespace) Print(args ...any) string {
   52 	return _fmt.Sprint(args...)
   53 }
   54 
   55 // Printf returns a formatted string representation of args.
   56 func (ns *Namespace) Printf(format string, args ...any) string {
   57 	return _fmt.Sprintf(format, args...)
   58 }
   59 
   60 // Println returns string representation of args  ending with a newline.
   61 func (ns *Namespace) Println(args ...any) string {
   62 	return _fmt.Sprintln(args...)
   63 }
   64 
   65 // Errorf formats args according to a format specifier and logs an ERROR.
   66 // It returns an empty string.
   67 func (ns *Namespace) Errorf(format string, args ...any) string {
   68 	ns.distinctLogger.Errorf(format, args...)
   69 	return ""
   70 }
   71 
   72 // Erroridf formats args according to a format specifier and logs an ERROR and
   73 // an information text that the error with the given ID can be suppressed in config.
   74 // It returns an empty string.
   75 func (ns *Namespace) Erroridf(id, format string, args ...any) string {
   76 	ns.distinctLogger.Errorsf(id, format, args...)
   77 	return ""
   78 }
   79 
   80 // Warnf formats args according to a format specifier and logs a WARNING.
   81 // It returns an empty string.
   82 func (ns *Namespace) Warnf(format string, args ...any) string {
   83 	ns.distinctLogger.Warnf(format, args...)
   84 	return ""
   85 }