func validateNonEmptyWithAllowNil()

in validator.go [405:447]


func validateNonEmptyWithAllowNil(v interface{}, _ string, allowNil bool) error {
	if s, ok := v.(string); ok {
		if s == "" {
			return ErrStringEmpty
		}
		return nil
	}

	if r, ok := v.(regexp.Regexp); ok {
		if r.String() == "" {
			return ErrRegexEmpty
		}
		return nil
	}

	val := reflect.ValueOf(v)
	if val.Kind() == reflect.Array || val.Kind() == reflect.Slice {
		if val.IsNil() {
			if allowNil {
				return nil
			}
			return ErrRequired
		}
		if val.Len() == 0 {
			return ErrArrayEmpty
		}
		return nil
	}
	if val.Kind() == reflect.Map {
		if val.IsNil() {
			if allowNil {
				return nil
			}
			return ErrRequired
		}
		if val.Len() == 0 {
			return ErrMapEmpty
		}
		return nil
	}

	return nil
}