module ProcessChain::InstanceMethods

Public Class Methods

new(input: {}, success: true) click to toggle source

Constructor @param input [Hash] input data for process @param success [true false] result of latest process @raise [ArgumentError] when input is not a Hash @return a new instance of class

# File lib/process_chain.rb, line 23
def initialize(input: {}, success: true)
  raise ArgumentError, '"input" should be a Hash' unless input.is_a? Hash
  @success = success
  @results = input
end

Public Instance Methods

if_fail() { || ... } click to toggle source

Execute passed code block if chain is not success @yield code block to be executed on fail

# File lib/process_chain.rb, line 43
def if_fail
  return self if success?
  yield
end
if_success() { || ... } click to toggle source

Execute passed code block if chain is success @yield code block to be executed on success

# File lib/process_chain.rb, line 36
def if_success
  return self unless success?
  yield if success?
end
return_fail(results = nil) click to toggle source

Returns a new fail instace of chain @param results [Hash] a new input for next process

# File lib/process_chain.rb, line 56
def return_fail(results = nil)
  self.class.new input: build_new_result(results), success: false
end
return_success(results = nil) click to toggle source

Returns a new success instace of chain @param results [Hash] a new input for next process

# File lib/process_chain.rb, line 50
def return_success(results = nil)
  self.class.new input: build_new_result(results)
end
success?() click to toggle source

@return [true false]

# File lib/process_chain.rb, line 30
def success?
  @success
end

Private Instance Methods

build_new_result(input) click to toggle source
# File lib/process_chain.rb, line 62
def build_new_result(input)
  input || results.dup
end