providers/strings: Add string functions provider
This commit is contained in:
parent
99e244fa92
commit
a7e8c337db
73
providers/strings/strings.go
Normal file
73
providers/strings/strings.go
Normal file
@ -0,0 +1,73 @@
|
||||
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, "/", "")
|
||||
}
|
Loading…
Reference in New Issue
Block a user