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 }