class Dry::Schema::Key::Hash

@api private
A specialized key type which handles nested hashes

def coercible(&coercer)

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

def dump

Other tags:
    Api: - private
def dump
  {name => members.map(&:dump)}
end

def initialize(id, members:, **opts)

Other tags:
    Api: - private
def initialize(id, members:, **opts)
  super(id, **opts)
  @members = members
end

def read(source)

Other tags:
    Api: - private
def read(source)
  super if source.is_a?(::Hash)
end

def stringified

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

def to_dot_notation

Other tags:
    Api: - private
def to_dot_notation
  [name].product(members.flat_map(&:to_dot_notation)).map { |e| e.join(DOT) }
end

def write(source, target)

def write(source, target)
  read(source) { |value|
    target[coerced_name] = value.is_a?(::Hash) ? members.write(value) : value
  }
end