class Dry::Schema::Key
@api public
Key objects used by key maps
def self.[](name, **opts)
- Api: - private
def self.[](name, **opts) new(name, **opts) end
def self.new(*args, **kwargs)
- Api: - private
def self.new(*args, **kwargs) fetch_or_store(args, kwargs) { super } end
def coerced_name
- Api: - private
def coerced_name @__coerced_name__ ||= coercer[name] end
def coercible(&coercer)
- Api: - private
def coercible(&coercer) new(coercer: coercer) end
def dump
- Api: - private
def dump name end
def initialize(id, name: id, coercer: DEFAULT_COERCER)
- Api: - private
def initialize(id, name: id, coercer: DEFAULT_COERCER) @id = id @name = name @coercer = coercer end
def new(**new_opts)
- Api: - private
def new(**new_opts) self.class.new(id, name: name, coercer: coercer, **new_opts) end
def read(source)
- 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
- Api: - private
def stringified new(name: name.to_s) end
def to_dot_notation
- Api: - private
def to_dot_notation [name.to_s] end
def write(source, target)
- Api: - private
def write(source, target) read(source) { |value| target[coerced_name] = value } end