Class: Lite::Validation::Validator::Coordinator::Builder
- Inherits:
-
Object
- Object
- Lite::Validation::Validator::Coordinator::Builder
show all
- Includes:
- Ruling::Constructors
- Defined in:
- lib/lite/validation/validator/coordinator/builder.rb
Class Method Summary
collapse
Instance Method Summary
collapse
#Commit, #Dispute, #Invalidate, #Pass, #Refute
Constructor Details
19
20
21
22
23
|
# File 'lib/lite/validation/validator/coordinator/builder.rb', line 19
def initialize
@validation_error_adapter = nil
@final_error_adapter = nil
@interface_adapter = nil
end
|
Class Method Details
.define(&block) ⇒ Object
15
16
17
|
# File 'lib/lite/validation/validator/coordinator/builder.rb', line 15
def self.define(&block)
new.tap { _1.instance_eval(&block) }.build
end
|
Instance Method Details
#build ⇒ Object
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/lite/validation/validator/coordinator/builder.rb', line 60
def build
result = validate
raise Error, "Builder invalid: #{result.error.message}" unless result.success?
Coordinator::Instance.new(
interface: interface_adapter,
validation_error: validation_error_adapter.build,
final_error: final_error_adapter
)
end
|
#final_error_adapter(*args) ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/lite/validation/validator/coordinator/builder.rb', line 36
def final_error_adapter(*args)
case args.length
when 1
raise(Error, 'Final error adapter already set') unless @final_error_adapter.nil?
@final_error_adapter = args[0]
when 0
@final_error_adapter
else raise Error, "Unexpected arguments to builder: #{args.inspect}"
end
end
|
#interface_adapter(*args) ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/lite/validation/validator/coordinator/builder.rb', line 48
def interface_adapter(*args)
case args.length
when 1
raise(Error, 'Monads adapter already set') unless @interface_adapter.nil?
@interface_adapter = args[0]
when 0 then @interface_adapter
else raise Error, "Unexpected arguments to builder: #{args.inspect}"
end
end
|
#validate ⇒ Object
rubocop:disable Metrics/AbcSize
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/lite/validation/validator/coordinator/builder.rb', line 71
def validate coordinator = Coordinator::Default.instance(Errors::Flat)
Validator::Node::Root.initial(self, coordinator).at do |builder|
builder.validate(:interface_adapter) do |adapter|
Refute(coordinator.internal_error(:value_missing)) if adapter.nil?
end.validate(:final_error_adapter) do |adapter|
Refute(coordinator.internal_error(:value_missing)) if adapter.nil?
end.at(:validation_error_adapter) do |errors|
errors.validate do |adapter|
Refute(coordinator.internal_error(:value_missing)) if adapter.nil?
end.validate(:structured_error) do |proc|
Refute(coordinator.internal_error(:value_missing)) if proc.nil?
end
end
end.to_result
end
|
#validation_error_adapter(&block) ⇒ Object
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/lite/validation/validator/coordinator/builder.rb', line 25
def validation_error_adapter(&block)
if block
raise(Error, 'Validation error adapter already set') unless @validation_error_adapter.nil?
@validation_error_adapter = Errors::Builder.define(&block)
else
@validation_error_adapter
end
end
|