diff options
Diffstat (limited to 'funcs/strings.go')
| -rw-r--r-- | funcs/strings.go | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/funcs/strings.go b/funcs/strings.go new file mode 100644 index 00000000..b78fe40c --- /dev/null +++ b/funcs/strings.go @@ -0,0 +1,100 @@ +package funcs + +// Namespace strings contains mostly wrappers of equivalently-named +// functions in the standard library `strings` package, with +// differences in argument order where it makes pipelining +// in templates easier. + +import ( + "sync" + + "strings" +) + +var ( + strNS *StringFuncs + strNSInit sync.Once +) + +// StrNS - +func StrNS() *StringFuncs { + strNSInit.Do(func() { strNS = &StringFuncs{} }) + return strNS +} + +// AddStringFuncs - +func AddStringFuncs(f map[string]interface{}) { + f["strings"] = StrNS + + f["replaceAll"] = StrNS().ReplaceAll + f["title"] = StrNS().Title + f["toUpper"] = StrNS().ToUpper + f["toLower"] = StrNS().ToLower + f["trimSpace"] = StrNS().TrimSpace + + // these are legacy aliases with non-pipelinable arg order + f["contains"] = strings.Contains + f["hasPrefix"] = strings.HasPrefix + f["hasSuffix"] = strings.HasSuffix + f["split"] = strings.Split + f["splitN"] = strings.SplitN + f["trim"] = strings.Trim +} + +// StringFuncs - +type StringFuncs struct{} + +// ReplaceAll - +func (f *StringFuncs) ReplaceAll(old, new, s string) string { + return strings.Replace(s, old, new, -1) +} + +// Contains - +func (f *StringFuncs) Contains(substr, s string) bool { + return strings.Contains(s, substr) +} + +// HasPrefix - +func (f *StringFuncs) HasPrefix(prefix, s string) bool { + return strings.HasPrefix(s, prefix) +} + +// HasSuffix - +func (f *StringFuncs) HasSuffix(suffix, s string) bool { + return strings.HasSuffix(s, suffix) +} + +// Split - +func (f *StringFuncs) Split(sep, s string) []string { + return strings.Split(s, sep) +} + +// SplitN - +func (f *StringFuncs) SplitN(sep string, n int, s string) []string { + return strings.SplitN(s, sep, n) +} + +// Trim - +func (f *StringFuncs) Trim(cutset, s string) string { + return strings.Trim(s, cutset) +} + +// Title - +func (f *StringFuncs) Title(s string) string { + return strings.Title(s) +} + +// ToUpper - +func (f *StringFuncs) ToUpper(s string) string { + return strings.ToUpper(s) +} + +// ToLower - +func (f *StringFuncs) ToLower(s string) string { + return strings.ToLower(s) +} + +// TrimSpace - +func (f *StringFuncs) TrimSpace(s string) string { + return strings.TrimSpace(s) +} |
