package strings import "strings" import "unicode" import "html/template" import "git.tebibyte.media/sashakoshka/step" var _ step.FuncProvider = new(Provider) // Provider provides string functions. type Provider struct { } // Package fulfills the step.Provider interface. func (this *Provider) Package () string { return "strings" } // FuncMap fulfills the step.FuncProvider interface. func (this *Provider) FuncMap () template.FuncMap { return template.FuncMap { "strip": funcStrip, "stripAny": funcStripAny, "stripNonLetters": funcStripNonLetters, "stripNonPrintables": funcStripNonPrintables, "stripSlashes": funcStripSlashes, } } func funcStrip (input string) string { output := strings.Builder { } for _, run := range input { if !unicode.IsSpace(run) { output.WriteRune(run) } } return output.String() } func funcStripAny (chars, input string) string { output := strings.Builder { } for _, run := range input { if strings.IndexRune(chars, run) < 0 { output.WriteRune(run) } } return output.String() } func funcStripNonLetters (input string) string { output := strings.Builder { } for _, run := range input { if unicode.IsLetter(run) { output.WriteRune(run) } } return output.String() } func funcStripNonPrintables (input string) string { output := strings.Builder { } for _, run := range input { if unicode.IsPrint(run) { output.WriteRune(run) } } return output.String() } func funcStripSlashes (input string) string { return strings.ReplaceAll(input, "/", "") }