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…
x
Reference in New Issue
Block a user