class Dry::Types::Maybe

@api public
Maybe extension provides Maybe types where values are wrapped using ‘Either` monad

def call_safe(input = Undefined)

Other tags:
    Api: - private

Returns:
  • (Dry::Monads::Maybe) -

Parameters:
  • input (Dry::Monads::Maybe, Object) --
def call_safe(input = Undefined)
  case input
  when ::Dry::Monads::Maybe
    input
  when Undefined
    None()
  else
    Maybe(type.call_safe(input) { |output = input| return yield(output) })
  end
end

def call_unsafe(input = Undefined)

Other tags:
    Api: - private

Returns:
  • (Dry::Monads::Maybe) -

Parameters:
  • input (Dry::Monads::Maybe, Object) --
def call_unsafe(input = Undefined)
  case input
  when ::Dry::Monads::Maybe
    input
  when Undefined
    None()
  else
    Maybe(type.call_unsafe(input))
  end
end

def default(value)

Other tags:
    Api: - public

Raises:
  • (ArgumentError) - if nil provided as default value

Other tags:
    See: Dry::Types::Builder#default -

Parameters:
  • value (Object) --
def default(value)
  if value.nil?
    raise ::ArgumentError, "nil cannot be used as a default of a maybe type"
  else
    super
  end
end

def default? = true

Other tags:
    Api: - public

Returns:
  • (true) -
def default? = true

def try(input = Undefined, &)

Other tags:
    Api: - public

Returns:
  • (Result::Success) -

Parameters:
  • input (Object) --
def try(input = Undefined, &)
  result = type.try(input)
  if result.success?
    Result::Success.new(Maybe(result.input))
  else
    result
  end
end