add Required, Prefix, Suffix, Contains, Match validators
Broadens the built-in set with the string/presence checks that came up most often when reaching for this package: - Required[T comparable] non-zero value - Prefix / Suffix / Contains strings.HasPrefix/HasSuffix/Contains - Match(*regexp.Regexp) arbitrary pattern All follow the existing shape: a constructor returning func(T) error, a sentinel error matched with errors.Is, table-driven tests and an Example. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+21
@@ -0,0 +1,21 @@
|
||||
package validate
|
||||
|
||||
var (
|
||||
ErrRequired = NewError("is required")
|
||||
)
|
||||
|
||||
// Required validates that a value is not the zero value for its type: an
|
||||
// empty string, 0, a nil pointer, and so on.
|
||||
//
|
||||
// It is defined for comparable types only. For slices and maps, use
|
||||
// MinSize(1); for "non-whitespace", combine with a trimming step.
|
||||
func Required[T comparable]() func(T) error {
|
||||
var zero T
|
||||
|
||||
return func(value T) error {
|
||||
if value == zero {
|
||||
return ErrRequired
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user