Module: Matheus::Result

Defined in:
lib/matheus/result.rb

Defined Under Namespace

Modules: Methods

Constant Summary collapse

Success =
Data.define(:value) do
  def success? = true

  def failure? = false

  def on_success = yield(value)

  def on_failure = self

  def error = nil

  def inspect = "Success(#{value.inspect})"
end
Failure =
Data.define(:error) do
  def success? = false

  def failure? = true

  def on_success = self

  def on_failure = yield(error)

  def value = raise "Can't call #value on a #{self.class} object. Object is #{inspect}"

  def inspect = "Failure(#{error.inspect})"
end

Class Method Summary collapse

Class Method Details

.from(value) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/matheus/result.rb', line 39

def self.from(value)
  if value.is_a?(Success) || value.is_a?(Failure)
    value
  else
    Success.new(value)
  end
end