class Dry::Types::Sum

def call(input)

Returns:
  • (Object) -

Parameters:
  • input (Object) --
def call(input)
  try(input).input
end

def constrained(options)

Other tags:
    See: Builder#constrained -

Returns:
  • (Constrained, Sum) -

Parameters:
  • options (Hash) --
def constrained(options)
  if optional?
    right.constrained(options).optional
  else
    super
  end
end

def constrained?

Returns:
  • (false) -
def constrained?
  false
end

def default?

Returns:
  • (false) -
def default?
  false
end

def failure(input, _error = nil)

def failure(input, _error = nil)
  if !left.valid?(input)
    left.failure(input, left.try(input).error)
  else
    right.failure(input, right.try(input).error)
  end
end

def initialize(left, right, options = {})

Parameters:
  • options (Hash) --
  • right (Type) --
  • left (Type) --
def initialize(left, right, options = {})
  super
  @left, @right = left, right
  freeze
end

def name

Returns:
  • (String) -
def name
  [left, right].map(&:name).join(' | ')
end

def optional?

Returns:
  • (Boolean) -
def optional?
  left == Types['strict.nil']
end

def primitive?(value)

Returns:
  • (Boolean) -

Parameters:
  • value (Object) --
def primitive?(value)
  left.primitive?(value) || right.primitive?(value)
end

def success(input)

def success(input)
  if left.valid?(input)
    left.success(input)
  elsif right.valid?(input)
    right.success(input)
  else
    raise ArgumentError, "Invalid success value '#{input}' for #{inspect}"
  end
end

def to_ast(meta: true)

Other tags:
    See: Definition#to_ast -

Other tags:
    Api: - public
def to_ast(meta: true)
  [:sum, [left.to_ast(meta: meta), right.to_ast(meta: meta), meta ? self.meta : EMPTY_HASH]]
end

def try(input, &block)

def try(input, &block)
  result = left.try(input) do
    right.try(input)
  end
  return result if result.success?
  if block
    yield(result)
  else
    result
  end
end

def valid?(value)

Returns:
  • (Boolean) -

Parameters:
  • value (Object) --
def valid?(value)
  left.valid?(value) || right.valid?(value)
end