class Danom::Default

A default “monad”. Not technically a monad as it take two values.

Public Class Methods

new(fallback, value) click to toggle source

@param fallback [Object] The value on which to fallback if the doesn't

satisfy Just(value)

@param value [Object]

Calls superclass method
# File lib/danom/default.rb, line 9
def initialize(fallback, value)
  @fallback = Just.new(fallback).value
  super(value)
end

Public Instance Methods

and_then(&block) click to toggle source

Allows chaining on nil values with a fallback

@note The fallback does not get the transformations

@example

d = Default('Missing name', nil)
d = d.upcase.split.join #=> Danom::Default
name = ~d # 'Missing name'

d = Default('Missing name', 'Uri')
d = d.upcase #=> Danom::Default
name = ~d # 'URI'

Default can be combined with a maybe. Extracting the value is recursive and will never return another monad.

@example Combining with a Maybe

m = Maybe(nil)
d = Default('No name', m) #=> Danom::Default
name = ~d #=>  'No name'

@see Danom::Monad#method_missing

# File lib/danom/default.rb, line 41
def and_then &block
  if @value == nil
    Default.new @fallback, nil
  else
    Default.new @fallback, block.call(@value)
  end
end
monad_value() click to toggle source

@override

Calls superclass method
# File lib/danom/default.rb, line 15
def monad_value
  super || @fallback
end