class Dry::Types::Schema::Key

rubocop:disable Style/ClassAndModuleChildren
@api private

def call_safe(input, &block)

Other tags:
    Api: - private
def call_safe(input, &block)
  type.call_safe(input, &block)
end

def call_unsafe(input)

Other tags:
    Api: - private
def call_unsafe(input)
  type.call_unsafe(input)
end

def decorate?(response)

Other tags:
    Api: - private
def decorate?(response)
  response.is_a?(Type)
end

def initialize(type, name, required: Undefined, **options)

Other tags:
    Api: - private
def initialize(type, name, required: Undefined, **options)
  required = Undefined.default(required) do
    type.meta.fetch(:required) { !type.meta.fetch(:omittable, false) }
  end
  unless name.is_a?(::Symbol)
    raise ArgumentError, "Schemas can only contain symbol keys, #{name.inspect} given"
  end
  super(type, name, required: required, **options)
  @name = name
end

def lax

Other tags:
    Api: - public

Returns:
  • (Lax) -
def lax
  __new__(type.lax).required(false)
end

def maybe

Other tags:
    Api: - private
    Api: - private
def maybe
  __new__(type.maybe)
end

def meta(data = Undefined)

Other tags:
    Api: - public

Other tags:
    See: Dry::Types::Meta#meta -
def meta(data = Undefined)
  if Undefined.equal?(data) || !data.key?(:omittable)
    super
  else
    self.class.warn(
      "Using meta for making schema keys is deprecated, " \
      "please use .omittable or .required(false) instead" \
      "\n" + Core::Deprecations::STACK.()
    )
    super.required(!data[:omittable])
  end
end

def omittable

Other tags:
    Api: - public

Returns:
  • (Dry::Types::Schema::Key) -
def omittable
  required(false)
end

def optional

Other tags:
    Api: - public

Returns:
  • (Key) -
def optional
  __new__(type.optional)
end

def required(required = Undefined)

Other tags:
    Api: - public

Returns:
  • (Dry::Types::Schema::Key) -
  • (Boolean) -

Parameters:
  • required (Boolean) -- New value

Overloads:
  • required(required)
  • required
def required(required = Undefined)
  if Undefined.equal?(required)
    options.fetch(:required)
  else
    with(required: required)
  end
end

def required?

Other tags:
    Api: - public

Returns:
  • (Boolean) -
def required?
  options.fetch(:required)
end

def to_ast(meta: true)

Other tags:
    Api: - public

Returns:
  • (Array) -
def to_ast(meta: true)
  [
    :key,
    [
      name,
      required,
      type.to_ast(meta: meta)
    ]
  ]
end

def try(input, &block)

Other tags:
    Api: - public

Other tags:
    See: Dry::Types::Nominal#try -
def try(input, &block)
  type.try(input, &block)
end