class Turbopuffer::Internal::Type::HashOf
def coerce(value, state:)
-
(Hash{Symbol=>Object}, Object)
-
Options Hash:
(**state)
-
:branched
(Integer
) -- -
:error
(Class
) -- -
:exactness
(Hash{Symbol=>Object}
) -- -
:strictness
(Boolean
) -- -
:translate_names
(Boolean
) --
Parameters:
-
state
(Hash{Symbol=>Object}
) -- . -
value
(Hash{Object=>Object}, Object
) --
Other tags:
- Api: - private
def coerce(value, state:) exactness = state.fetch(:exactness) unless value.is_a?(Hash) exactness[:no] += 1 state[:error] = TypeError.new("#{value.class} can't be coerced into #{Hash}") return value end target = item_type exactness[:yes] += 1 value .to_h do |key, val| k = key.is_a?(String) ? key.to_sym : key v = case [nilable?, val] in [true, nil] exactness[:yes] += 1 nil else Turbopuffer::Internal::Type::Converter.coerce(target, val, state: state) end exactness[:no] += 1 unless k.is_a?(Symbol) [k, v] end end