gitee.com/h79/goutils@v1.22.10/common/template/funcs.go (about)

     1  package template
     2  
     3  import (
     4  	"encoding/json"
     5  	"strings"
     6  	"time"
     7  )
     8  
     9  func JSONMarshal(v interface{}) string {
    10  	b, err := json.Marshal(v)
    11  	if err != nil {
    12  		return ""
    13  	}
    14  	return string(b)
    15  }
    16  
    17  func Trim(v interface{}) string {
    18  	var s = v.(string)
    19  	return strings.Trim(s, " ")
    20  }
    21  
    22  func Escape(v interface{}) string {
    23  	// escape tabs
    24  	var str = strings.ReplaceAll(v.(string), "\t", "\\t")
    25  	// replace " with \", and if that results in \\", replace that with \\\"
    26  	str = strings.ReplaceAll(str, "\"", "\\\"")
    27  
    28  	return strings.ReplaceAll(str, "\\\\\"", "\\\\\\\"")
    29  }
    30  
    31  func TimeCurrent() int64 {
    32  	return time.Now().Unix()
    33  }
    34  
    35  func Chain(handlers ...CommandFunc) CommandFunc {
    36  	n := len(handlers)
    37  
    38  	if n == 0 {
    39  		return func(data interface{}, opt *Option, handler HandlerFunc) error {
    40  			return handler(data, opt)
    41  		}
    42  	}
    43  	if n == 1 {
    44  		return handlers[0]
    45  	}
    46  	last := n - 1
    47  	return func(data interface{}, opt *Option, handler HandlerFunc) error {
    48  
    49  		var (
    50  			chain HandlerFunc
    51  			cur   int
    52  		)
    53  		chain = func(data interface{}, opt *Option) error {
    54  			if cur == last {
    55  				return handler(data, opt)
    56  			}
    57  			cur++
    58  			err := handlers[cur](data, opt, chain)
    59  			cur--
    60  			return err
    61  		}
    62  		return handlers[0](data, opt, chain)
    63  	}
    64  }