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)
- Api: - private
def self.new(*args) fetch_or_store(*args) { 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 = EMPTY_HASH)
- Api: - private
def new(new_opts = EMPTY_HASH) self.class.new(id, { name: name, coercer: coercer }.merge(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 write(source, target)
- Api: - private
def write(source, target) read(source) { |value| target[coerced_name] = value } end