class Dry::Types::Map
def coerce(input)
def coerce(input) return failure( input, "#{input.inspect} must be an instance of #{primitive}" ) unless primitive?(input) output, failures = {}, [] input.each do |k,v| res_k = options[:key_type].try(k) res_v = options[:value_type].try(v) if res_k.failure? failures << "input key #{k.inspect} is invalid: #{res_k.error}" elsif output.key?(res_k.input) failures << "duplicate coerced hash key #{res_k.input.inspect}" elsif res_v.failure? failures << "input value #{v.inspect} for key #{k.inspect} is invalid: #{res_v.error}" else output[res_k.input] = res_v.input end end return success(output) if failures.empty? failure(input, failures) end