1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package validate
- import "fmt"
- // Validation error.
- var (
- Err = Error{}
- )
- // Error represents a validation error.
- type Error struct {
- Message string
- Data []any
- }
- // Error retrieves the message of a validation Error.
- // If it has Data, the message will be formatted.
- func (e Error) Error() string {
- if len(e.Data) > 0 {
- return fmt.Sprintf(e.Message, e.Data...)
- }
- return e.Message
- }
- // Is determines whether the Error is an instance of the target.
- // https://pkg.go.dev/errors#Is
- //
- // If the target is a validation error and specifies a message, this function returns true if the messages match.
- // If the target is an empty validation error, this function always returns true.
- func (e Error) Is(target error) bool {
- if t, ok := target.(Error); ok {
- return t.Message == e.Message || t.Message == ""
- }
- return false
- }
- func (e Error) With(value any) Error {
- if e.Data == nil {
- e.Data = []any{}
- }
- e.Data = append(e.Data, value)
- return e
- }
- // NewError creates a new validation error.
- func NewError(message string) Error {
- return Error{
- Message: message,
- }
- }
|