for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
module Koine
module Attributes
module Adapter
class HashOf < Base
def initialize(key_adapter, value_adapter)
@key_adapter = key_adapter || raise(ArgumentError, 'Invalid key adapter')
@value_adapter = value_adapter || raise(ArgumentError, 'Invalid value adapter')
with_default_value({})
end
def coerce(hash)
secure do
{}.tap do |new_hash|
hash.each do |key, value|
key = @key_adapter.coerce(key)
value = @value_adapter.coerce(value)
new_hash[key] = value