class SafeOperation

Constants

VERSION

Public Class Methods

failure(value) click to toggle source
# File lib/safe_operation.rb, line 24
def failure(value)
  new(failure: value)
end
new(success: nil, failure: nil) click to toggle source
# File lib/safe_operation.rb, line 31
def initialize(success: nil, failure: nil)
  @result = success ? Success.new(success) : Failure.new(failure)
end
run() { || ... } click to toggle source
# File lib/safe_operation.rb, line 14
def run
  success(yield)
rescue StandardError => exception
  failure(exception)
end
success(value) click to toggle source
# File lib/safe_operation.rb, line 20
def success(value)
  new(success: value)
end

Public Instance Methods

and_then(&block) click to toggle source
# File lib/safe_operation.rb, line 51
def and_then(&block)
  if success?
    self.class.success(block.call(value))
  else
    self
  end
end
or_else(&block) click to toggle source
# File lib/safe_operation.rb, line 59
def or_else(&block)
  if success?
    self
  else
    self.class.failure(block.call(value))
  end
end
value_or(fallback_value) click to toggle source
# File lib/safe_operation.rb, line 35
def value_or(fallback_value)
  if success?
    value
  else
    fallback_value
  end
end
value_or_else(&fallback_block) click to toggle source
# File lib/safe_operation.rb, line 43
def value_or_else(&fallback_block)
  if success?
    value
  else
    fallback_block.call(value)
  end
end