Class: ConvenientService::Service::Plugins::CanHaveConnectedSteps::Entities::Expressions::ComplexIf
- Inherits:
-
Base
- Object
- Base
- ConvenientService::Service::Plugins::CanHaveConnectedSteps::Entities::Expressions::ComplexIf
show all
- Defined in:
- lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from Base
#and?, #else?, #empty?, #group?, #if?, #not?, #or?, #scalar?, #steps
#copy
abstract_method
Constructor Details
#initialize(if_expressions, else_expression = nil) ⇒ void
37
38
39
40
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 37
def initialize(if_expressions, else_expression = nil)
@if_expressions = if_expressions
@else_expression = else_expression
end
|
Instance Attribute Details
#else_expression ⇒ Object
Returns the value of attribute else_expression.
25
26
27
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 25
def else_expression
@else_expression
end
|
#if_expressions ⇒ Object
Returns the value of attribute if_expressions.
19
20
21
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 19
def if_expressions
@if_expressions
end
|
#organizer ⇒ Object
Returns the value of attribute organizer.
30
31
32
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 30
def organizer
@organizer
end
|
Instance Method Details
#==(other) ⇒ Boolean?
153
154
155
156
157
158
159
160
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 153
def ==(other)
return unless other.instance_of?(self.class)
return false if if_expressions != other.if_expressions
return false if else_expression != other.else_expression
true
end
|
#complex_if? ⇒ Boolean
145
146
147
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 145
def complex_if?
true
end
|
rubocop:disable Lint/NonLocalExitFromIterator
107
108
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 107
def each_evaluated_step(&block)
if_expressions.each do |if_expression|
if_expression.condition_expression.each_evaluated_step(&block)
return if if_expression.condition_expression.error?
return if_expression.then_expression.each_evaluated_step(&block) if if_expression.condition_expression.success?
end
else_expression&.each_evaluated_step(&block)
self
end
|
94
95
96
97
98
99
100
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 94
def each_step(&block)
if_expressions.each { |if_expression| if_expression.each_step(&block) }
else_expression&.each_step(&block)
self
end
|
#error? ⇒ Boolean
81
82
83
84
85
86
87
88
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 81
def error?
if_expressions.each do |if_expression|
return true if if_expression.condition_expression.error?
return if_expression.then_expression.error? if if_expression.condition_expression.success?
end
else_expression ? else_expression.error? : false
end
|
#failure? ⇒ Boolean
69
70
71
72
73
74
75
76
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 69
def failure?
if_expressions.each do |if_expression|
return false if if_expression.condition_expression.error?
return if_expression.then_expression.failure? if if_expression.condition_expression.success?
end
else_expression ? else_expression.failure? : false
end
|
#inspect ⇒ String
133
134
135
136
137
138
139
140
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 133
def inspect
[
"if #{if_expressions.first.condition_expression.inspect} then #{if_expressions.first.then_expression.inspect}",
*if_expressions[1..].map { |if_expression| "elsif #{if_expression.condition_expression.inspect} then #{if_expression.then_expression.inspect}" },
"end"
]
.join(" ")
end
|
45
46
47
48
49
50
51
52
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 45
def result
if_expressions.each do |if_expression|
return if_expression.condition_expression.result if if_expression.condition_expression.error?
return if_expression.then_expression.result if if_expression.condition_expression.success?
end
else_expression ? else_expression.result : organizer.success
end
|
#success? ⇒ Boolean
57
58
59
60
61
62
63
64
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 57
def success?
if_expressions.each do |if_expression|
return false if if_expression.condition_expression.error?
return if_expression.then_expression.success? if if_expression.condition_expression.success?
end
else_expression ? else_expression.success? : true
end
|
165
166
167
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 165
def to_arguments
Support::Arguments.new(if_expressions, else_expression)
end
|
125
126
127
128
|
# File 'lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/complex_if.rb', line 125
def with_organizer(organizer)
copy(overrides: {args: {0 => if_expressions.map { |if_expression| if_expression.with_organizer(organizer) }, 1 => else_expression&.with_organizer(organizer)}})
.tap { |complex_if| complex_if.organizer = organizer }
end
|