class Dry::Types::Default

Default types are useful when a missing value should be replaced by a default one

@api public

Attributes

evaluate[R]

@return [Object]

value[R]

@return [Object]

Public Class Methods

[](value) click to toggle source

@param [Object, call] value

@return [Class] {Default} or {Default::Callable}

@api private

# File lib/dry/types/default.rb, line 44
def self.[](value)
  if value.respond_to?(:call)
    Callable
  else
    self
  end
end
new(type, value, **options) click to toggle source

@param [Type] type @param [Object] value

@api private

Calls superclass method Dry::Types::Decorator::new
# File lib/dry/types/default.rb, line 56
def initialize(type, value, **options)
  super
  @value = value
end

Public Instance Methods

call_safe(input = Undefined, &block) click to toggle source

@param [Object] input

@return [Object] value passed through {#type} or {#default} value

@api private

# File lib/dry/types/default.rb, line 113
def call_safe(input = Undefined, &block)
  if input.equal?(Undefined)
    evaluate
  else
    Undefined.default(type.call_safe(input, &block)) { evaluate }
  end
end
call_unsafe(input = Undefined) click to toggle source

@param [Object] input

@return [Object] value passed through {#type} or {#default} value

@api private

# File lib/dry/types/default.rb, line 100
def call_unsafe(input = Undefined)
  if input.equal?(Undefined)
    evaluate
  else
    Undefined.default(type.call_unsafe(input)) { evaluate }
  end
end
callable?() click to toggle source

@return [false]

@api private

# File lib/dry/types/default.rb, line 124
def callable?
  false
end
constrained(*args) click to toggle source

Build a constrained type

@param [Array] args see {Dry::Types::Builder#constrained}

@return [Default]

@api public

# File lib/dry/types/default.rb, line 68
def constrained(*args)
  type.constrained(*args).default(value)
end
default?() click to toggle source

@return [true]

@api public

# File lib/dry/types/default.rb, line 75
def default?
  true
end
try(input) click to toggle source

@param [Object] input

@return [Result::Success]

@api public

# File lib/dry/types/default.rb, line 84
def try(input)
  success(call(input))
end
valid?(value = Undefined) click to toggle source

@return [Boolean]

@api public

Calls superclass method Dry::Types::Type#valid?
# File lib/dry/types/default.rb, line 91
def valid?(value = Undefined)
  Undefined.equal?(value) || super
end