84 lines
2.0 KiB
Go
84 lines
2.0 KiB
Go
package ansi
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
"text/template"
|
|
)
|
|
|
|
// TemplateFuncMap contains a few useful template helpers
|
|
var (
|
|
TemplateFuncMap = template.FuncMap{
|
|
"Left": func(values ...interface{}) string {
|
|
s := values[0].(string)
|
|
n := values[1].(int)
|
|
if n > len(s) {
|
|
n = len(s)
|
|
}
|
|
|
|
return s[:n]
|
|
},
|
|
"Matches": func(values ...interface{}) bool {
|
|
ok, _ := regexp.MatchString(values[1].(string), values[0].(string))
|
|
return ok
|
|
},
|
|
"Mid": func(values ...interface{}) string {
|
|
s := values[0].(string)
|
|
l := values[1].(int)
|
|
if l > len(s) {
|
|
l = len(s)
|
|
}
|
|
|
|
if len(values) > 2 {
|
|
r := values[2].(int)
|
|
if r > len(s) {
|
|
r = len(s)
|
|
}
|
|
return s[l:r]
|
|
}
|
|
return s[l:]
|
|
},
|
|
"Right": func(values ...interface{}) string {
|
|
s := values[0].(string)
|
|
n := len(s) - values[1].(int)
|
|
if n < 0 {
|
|
n = 0
|
|
}
|
|
|
|
return s[n:]
|
|
},
|
|
"Last": func(values ...interface{}) string {
|
|
return values[0].([]string)[len(values[0].([]string))-1]
|
|
},
|
|
// strings functions
|
|
"Compare": strings.Compare, // 1.5+ only
|
|
"Contains": strings.Contains,
|
|
"ContainsAny": strings.ContainsAny,
|
|
"Count": strings.Count,
|
|
"EqualFold": strings.EqualFold,
|
|
"HasPrefix": strings.HasPrefix,
|
|
"HasSuffix": strings.HasSuffix,
|
|
"Index": strings.Index,
|
|
"IndexAny": strings.IndexAny,
|
|
"Join": strings.Join,
|
|
"LastIndex": strings.LastIndex,
|
|
"LastIndexAny": strings.LastIndexAny,
|
|
"Repeat": strings.Repeat,
|
|
"Replace": strings.Replace,
|
|
"Split": strings.Split,
|
|
"SplitAfter": strings.SplitAfter,
|
|
"SplitAfterN": strings.SplitAfterN,
|
|
"SplitN": strings.SplitN,
|
|
"Title": strings.Title,
|
|
"ToLower": strings.ToLower,
|
|
"ToTitle": strings.ToTitle,
|
|
"ToUpper": strings.ToUpper,
|
|
"Trim": strings.Trim,
|
|
"TrimLeft": strings.TrimLeft,
|
|
"TrimPrefix": strings.TrimPrefix,
|
|
"TrimRight": strings.TrimRight,
|
|
"TrimSpace": strings.TrimSpace,
|
|
"TrimSuffix": strings.TrimSuffix,
|
|
}
|
|
)
|