Class: Dry::Types::Sum
Defined Under Namespace
Classes: Constrained
Instance Attribute Summary collapse
Attributes included from Options
#options
Instance Method Summary
collapse
Methods included from Options
#meta, #with
Methods included from Builder
#constrained, #constrained_type, #constructor, #default, #enum, #maybe, #optional, #safe, #|
Constructor Details
#initialize(left, right, options = {}) ⇒ Sum
Returns a new instance of Sum.
41
42
43
44
45
|
# File 'lib/dry/types/sum.rb', line 41
def initialize(left, right, options = {})
super
@left, @right = left, right
freeze
end
|
Instance Attribute Details
11
12
13
|
# File 'lib/dry/types/sum.rb', line 11
def left
@left
end
|
14
15
16
|
# File 'lib/dry/types/sum.rb', line 14
def right
@right
end
|
Instance Method Details
#call(input) ⇒ Object
Also known as:
[]
69
70
71
|
# File 'lib/dry/types/sum.rb', line 69
def call(input)
try(input).input
end
|
#constrained? ⇒ false
63
64
65
|
# File 'lib/dry/types/sum.rb', line 63
def constrained?
false
end
|
#default? ⇒ false
53
54
55
|
# File 'lib/dry/types/sum.rb', line 53
def default?
false
end
|
#maybe? ⇒ false
58
59
60
|
# File 'lib/dry/types/sum.rb', line 58
def maybe?
false
end
|
#name ⇒ String
48
49
50
|
# File 'lib/dry/types/sum.rb', line 48
def name
[left, right].map(&:name).join(' | ')
end
|
#primitive?(value) ⇒ Boolean
90
91
92
|
# File 'lib/dry/types/sum.rb', line 90
def primitive?(value)
left.primitive?(value) || right.primitive?(value)
end
|
#try(input, &block) ⇒ Object
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# File 'lib/dry/types/sum.rb', line 74
def try(input, &block)
result = left.try(input) do
right.try(input)
end
return result if result.success?
if block
yield(result)
else
result
end
end
|
#valid?(value) ⇒ Boolean
96
97
98
|
# File 'lib/dry/types/sum.rb', line 96
def valid?(value)
left.valid?(value) || right.valid?(value)
end
|