class BusinessFlow::Step::ConditionList

Handle some logic around conditions

Public Class Methods

new(if_stmts, unless_stmts) click to toggle source
# File lib/business_flow/step.rb, line 150
def initialize(if_stmts, unless_stmts)
  @conditions = Array.wrap(if_stmts).map(&Callable.method(:new)) +
                Array.wrap(unless_stmts).map(&method(:to_unless))
end

Public Instance Methods

call(instance, inputs) click to toggle source
# File lib/business_flow/step.rb, line 155
def call(instance, inputs)
  @conditions.all? { |cond| cond.call(instance, inputs) }
end

Private Instance Methods

to_unless(cond) click to toggle source
# File lib/business_flow/step.rb, line 161
def to_unless(cond)
  if_stmt = Callable.new(cond)
  unless_stmt = proc do |instance, input|
    !if_stmt.call(instance, input)
  end
  Callable.new(unless_stmt)
end