42 lines
957 B
Go
42 lines
957 B
Go
package validate
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"strings"
|
||
|
|
)
|
||
|
|
|
||
|
|
var (
|
||
|
|
ErrMissingPrefix = NewError("must start with %q")
|
||
|
|
ErrMissingSuffix = NewError("must end with %q")
|
||
|
|
ErrMissingSubstring = NewError("must contain %q")
|
||
|
|
)
|
||
|
|
|
||
|
|
// Prefix validates that a string begins with a given prefix.
|
||
|
|
func Prefix(prefix string) func(string) error {
|
||
|
|
return func(value string) error {
|
||
|
|
if !strings.HasPrefix(value, prefix) {
|
||
|
|
return ErrMissingPrefix.With(prefix)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Suffix validates that a string ends with a given suffix.
|
||
|
|
func Suffix(suffix string) func(string) error {
|
||
|
|
return func(value string) error {
|
||
|
|
if !strings.HasSuffix(value, suffix) {
|
||
|
|
return ErrMissingSuffix.With(suffix)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Contains validates that a string contains a given substring.
|
||
|
|
func Contains(substr string) func(string) error {
|
||
|
|
return func(value string) error {
|
||
|
|
if !strings.Contains(value, substr) {
|
||
|
|
return ErrMissingSubstring.With(substr)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
}
|