in lib/openai/internal/type/base_model.rb [259:291]
def dump(value, state:)
unless (coerced = OpenAI::Internal::Util.coerce_hash(value)).is_a?(Hash)
return super
end
acc = {}
coerced.each do |key, val|
name = key.is_a?(String) ? key.to_sym : key
case (field = known_fields[name])
in nil
acc.store(name, super(val, state: state))
else
api_name, mode, type_fn = field.fetch_values(:api_name, :mode, :type_fn)
case mode
in :coerce
next
else
target = type_fn.call
acc.store(api_name, OpenAI::Internal::Type::Converter.dump(target, val, state: state))
end
end
end
known_fields.each_value do |field|
api_name, mode, const = field.fetch_values(:api_name, :mode, :const)
next if mode == :coerce || acc.key?(api_name) || const == OpenAI::Internal::OMIT
acc.store(api_name, const)
end
acc
end