class Opie::Operation

Constants

FAIL

Attributes

context[R]
failure[R]
output[R]

Public Class Methods

call(input = nil, context = nil) click to toggle source
# File lib/opie/operation.rb, line 26
def call(input = nil, context = nil)
  new.call(input, context)
end
step(name) click to toggle source
# File lib/opie/operation.rb, line 30
def step(name)
  add_step(name)
end
step_list() click to toggle source
# File lib/opie/operation.rb, line 34
def step_list
  @steps ||= []
end

Private Class Methods

add_step(name) click to toggle source
# File lib/opie/operation.rb, line 40
def add_step(name)
  @steps ||= []
  @steps << name
end

Public Instance Methods

call(input = nil, context = nil) click to toggle source
# File lib/opie/operation.rb, line 7
def call(input = nil, context = nil)
  @context = context
  execute_steps(input)
  self
end
failure?() click to toggle source
# File lib/opie/operation.rb, line 13
def failure?
  failure
end
failures() click to toggle source
# File lib/opie/operation.rb, line 21
def failures
  [failure].compact
end
success?() click to toggle source
# File lib/opie/operation.rb, line 17
def success?
  !failure?
end

Private Instance Methods

execute_step(name, input) click to toggle source
# File lib/opie/operation.rb, line 60
def execute_step(name, input)
  args = [name, input]
  args = args.push(context) if method(name).arity == 2
  public_send(*args)
end
execute_steps(input) click to toggle source
# File lib/opie/operation.rb, line 48
def execute_steps(input)
  step_list = self.class.step_list

  next_input = input
  step_list.find do |name|
    next_input = execute_step(name, next_input)
    failure?
  end

  @output = next_input if success?
end
fail(type, data = nil) click to toggle source
# File lib/opie/operation.rb, line 66
def fail(type, data = nil)
  @failure = Failure.new(type, data)
end