class Dry::Schema::Key

@api public
Key objects used by key maps

def self.[](name, **opts)

Other tags:
    Api: - private
def self.[](name, **opts)
  new(name, **opts)
end

def self.new(*args, **kwargs)

Other tags:
    Api: - private
def self.new(*args, **kwargs)
  fetch_or_store(args, kwargs) { super }
end

def coerced_name

Other tags:
    Api: - private
def coerced_name
  @__coerced_name__ ||= coercer[name]
end

def coercible(&coercer)

Other tags:
    Api: - private
def coercible(&coercer)
  new(coercer: coercer)
end

def dump

Other tags:
    Api: - private
def dump
  name
end

def initialize(id, name: id, coercer: DEFAULT_COERCER)

Other tags:
    Api: - private
def initialize(id, name: id, coercer: DEFAULT_COERCER)
  @id = id
  @name = name
  @coercer = coercer
end

def new(**new_opts)

Other tags:
    Api: - private
def new(**new_opts)
  self.class.new(id, name: name, coercer: coercer, **new_opts)
end

def read(source)

Other tags:
    Api: - private
def read(source)
  return unless source.is_a?(::Hash)
  if source.key?(name)
    yield(source[name])
  elsif source.key?(coerced_name)
    yield(source[coerced_name])
  end
end

def stringified

Other tags:
    Api: - private
def stringified
  new(name: name.to_s)
end

def to_dot_notation

Other tags:
    Api: - private
def to_dot_notation
  [name.to_s]
end

def write(source, target)

Other tags:
    Api: - private
def write(source, target)
  read(source) { |value| target[coerced_name] = value }
end