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 41
def self.[](value)
  if value.respond_to?(:call)
    Callable
  else
    self
  end
end
new(type, value, **) 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 53
def initialize(type, value, **)
  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 110
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 97
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 121
def callable?
  false
end
constrained(...) 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 65
def constrained(...)
  type.constrained(...).default(value)
end
default?() click to toggle source

@return [true]

@api public

# File lib/dry/types/default.rb, line 72
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 81
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 88
def valid?(value = Undefined)
  Undefined.equal?(value) || super
end