github.com/charmbracelet/glamour@v0.7.0/ansi/templatehelper.go (about) 1 package ansi 2 3 import ( 4 "regexp" 5 "strings" 6 "text/template" 7 ) 8 9 // TemplateFuncMap contains a few useful template helpers. 10 var ( 11 TemplateFuncMap = template.FuncMap{ 12 "Left": func(values ...interface{}) string { 13 s := values[0].(string) 14 n := values[1].(int) 15 if n > len(s) { 16 n = len(s) 17 } 18 19 return s[:n] 20 }, 21 "Matches": func(values ...interface{}) bool { 22 ok, _ := regexp.MatchString(values[1].(string), values[0].(string)) 23 return ok 24 }, 25 "Mid": func(values ...interface{}) string { 26 s := values[0].(string) 27 l := values[1].(int) 28 if l > len(s) { 29 l = len(s) 30 } 31 32 //nolint:gomnd 33 if len(values) > 2 { 34 r := values[2].(int) 35 if r > len(s) { 36 r = len(s) 37 } 38 return s[l:r] 39 } 40 return s[l:] 41 }, 42 "Right": func(values ...interface{}) string { 43 s := values[0].(string) 44 n := len(s) - values[1].(int) 45 if n < 0 { 46 n = 0 47 } 48 49 return s[n:] 50 }, 51 "Last": func(values ...interface{}) string { 52 return values[0].([]string)[len(values[0].([]string))-1] 53 }, 54 // strings functions 55 "Compare": strings.Compare, // 1.5+ only 56 "Contains": strings.Contains, 57 "ContainsAny": strings.ContainsAny, 58 "Count": strings.Count, 59 "EqualFold": strings.EqualFold, 60 "HasPrefix": strings.HasPrefix, 61 "HasSuffix": strings.HasSuffix, 62 "Index": strings.Index, 63 "IndexAny": strings.IndexAny, 64 "Join": strings.Join, 65 "LastIndex": strings.LastIndex, 66 "LastIndexAny": strings.LastIndexAny, 67 "Repeat": strings.Repeat, 68 "Replace": strings.Replace, 69 "Split": strings.Split, 70 "SplitAfter": strings.SplitAfter, 71 "SplitAfterN": strings.SplitAfterN, 72 "SplitN": strings.SplitN, 73 "Title": strings.Title, 74 "ToLower": strings.ToLower, 75 "ToTitle": strings.ToTitle, 76 "ToUpper": strings.ToUpper, 77 "Trim": strings.Trim, 78 "TrimLeft": strings.TrimLeft, 79 "TrimPrefix": strings.TrimPrefix, 80 "TrimRight": strings.TrimRight, 81 "TrimSpace": strings.TrimSpace, 82 "TrimSuffix": strings.TrimSuffix, 83 } 84 )