class Dry::Types::Schema::Key
rubocop:disable Style/ClassAndModuleChildren
@api private
def call_safe(input, &) = type.call_safe(input, &)
- Api: - private
def call_safe(input, &) = type.call_safe(input, &)
def call_unsafe(input) = type.call_unsafe(input)
- Api: - private
def call_unsafe(input) = type.call_unsafe(input)
def decorate?(response) = response.is_a?(Type)
- Api: - private
def decorate?(response) = response.is_a?(Type)
def initialize(type, name, required: Undefined, **options)
- 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 @name = name end
def lax = __new__(type.lax).required(false)
- Api: - public
Returns:
-
(Lax)
-
def lax = __new__(type.lax).required(false)
def maybe = __new__(type.maybe)
- Api: - private
Api: - private
def maybe = __new__(type.maybe)
def meta(data = Undefined)
- 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 = required(false)
- Api: - public
Returns:
-
(Dry::Types::Schema::Key)
-
def omittable = required(false)
def optional = __new__(type.optional)
- Api: - public
Returns:
-
(Key)
-
def optional = __new__(type.optional)
def required(required = Undefined)
- 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? = options.fetch(:required)
- Api: - public
Returns:
-
(Boolean)
-
def required? = options.fetch(:required)
def to_ast(meta: true)
- Api: - public
Returns:
-
(Array)
-
def to_ast(meta: true) [ :key, [ name, required, type.to_ast(meta: meta) ] ] end
def try(input, &) = type.try(input, &)
- Api: - public
Other tags:
- See: Dry::Types::Nominal#try -
def try(input, &) = type.try(input, &)