class Dry::Schema::Key::Hash
A specialized key type which handles nested hashes
@api private
Attributes
members[R]
@api private
Public Class Methods
new(id, members:, **opts)
click to toggle source
@api private
Calls superclass method
Dry::Schema::Key::new
# File lib/dry/schema/key.rb, line 100 def initialize(id, members:, **opts) super(id, **opts) @members = members end
Public Instance Methods
coercible(&coercer)
click to toggle source
@api private
# File lib/dry/schema/key.rb, line 117 def coercible(&coercer) new(coercer: coercer, members: members.coercible(&coercer)) end
dump()
click to toggle source
@api private
# File lib/dry/schema/key.rb, line 132 def dump {name => members.map(&:dump)} end
read(source)
click to toggle source
@api private
Calls superclass method
Dry::Schema::Key#read
# File lib/dry/schema/key.rb, line 106 def read(source) super if source.is_a?(::Hash) end
stringified()
click to toggle source
@api private
# File lib/dry/schema/key.rb, line 122 def stringified new(name: name.to_s, members: members.stringified) end
to_dot_notation()
click to toggle source
@api private
# File lib/dry/schema/key.rb, line 127 def to_dot_notation [name].product(members.flat_map(&:to_dot_notation)).map { |e| e.join(DOT) } end
write(source, target)
click to toggle source
# File lib/dry/schema/key.rb, line 110 def write(source, target) read(source) { |value| target[coerced_name] = value.is_a?(::Hash) ? members.write(value) : value } end