1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package valid
- import "context"
- func When(condition bool, rules ...Rule) WhenRule {
- return WhenRule{
- condition: condition,
- rules: rules,
- elseRules: []Rule{},
- }
- }
- type WhenRule struct {
- condition bool
- rules []Rule
- elseRules []Rule
- }
- func (r WhenRule) Validate(value interface{}) error {
- return r.ValidateWithContext(nil, value)
- }
- func (r WhenRule) ValidateWithContext(ctx context.Context, value interface{}) error {
- if r.condition {
- if ctx == nil {
- return Validate(value, r.rules...)
- } else {
- return ValidateWithContext(ctx, value, r.rules...)
- }
- }
- if ctx == nil {
- return Validate(value, r.elseRules...)
- } else {
- return ValidateWithContext(ctx, value, r.elseRules...)
- }
- }
- func (r WhenRule) Else(rules ...Rule) WhenRule {
- r.elseRules = rules
- return r
- }
|