12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- // Copyright 2018 Qiang Xue, Google LLC. All rights reserved.
- // Use of this source code is governed by a MIT-style
- // license that can be found in the LICENSE file.
- package validation
- import (
- "errors"
- )
- // NotIn returns a validation rule that checks if a value os absent from, the given list of values.
- // Note that the value being checked and the possible range of values must be of the same type.
- // An empty value is considered valid. Use the Required rule to make sure a value is not empty.
- func NotIn(values ...interface{}) *NotInRule {
- return &NotInRule{
- elements: values,
- message: "must not be in list",
- }
- }
- type NotInRule struct {
- elements []interface{}
- message string
- }
- // Validate checks if the given value is valid or not.
- func (r *NotInRule) Validate(value interface{}) error {
- value, isNil := Indirect(value)
- if isNil || IsEmpty(value) {
- return nil
- }
- for _, e := range r.elements {
- if e == value {
- return errors.New(r.message)
- }
- }
- return nil
- }
- // Error sets the error message for the rule.
- func (r *NotInRule) Error(message string) *NotInRule {
- r.message = message
- return r
- }
|