| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | 
							- package valid
 
- import "context"
 
- // When returns a validation rule that executes the given list of rules when the condition is true.
 
- func When(condition bool, rules ...Rule) WhenRule {
 
- 	return WhenRule{
 
- 		condition: condition,
 
- 		rules:     rules,
 
- 		elseRules: []Rule{},
 
- 	}
 
- }
 
- // WhenRule is a validation rule that executes the given list of rules when the condition is true.
 
- type WhenRule struct {
 
- 	condition bool
 
- 	rules     []Rule
 
- 	elseRules []Rule
 
- }
 
- // Validate checks if the condition is true and if so, it validates the value using the specified rules.
 
- func (r WhenRule) Validate(value interface{}) error {
 
- 	return r.ValidateWithContext(nil, value)
 
- }
 
- // ValidateWithContext checks if the condition is true and if so, it validates the value using the specified rules.
 
- 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...)
 
- 	}
 
- }
 
- // Else returns a validation rule that executes the given list of rules when the condition is false.
 
- func (r WhenRule) Else(rules ...Rule) WhenRule {
 
- 	r.elseRules = rules
 
- 	return r
 
- }
 
 
  |