def merge_multiparameter_attributes(pairs)
pairs = extract_multiparameter_attributes(pairs)
errors = []
attributes = {}
pairs.each do |name, values_with_empty_parameters|
values = values_with_empty_parameters.compact
if values.empty?
attributes[name] = nil
next
end
klass = properties[name].primitive
begin
attributes[name] =
if klass == Time
Time.local(*values)
elsif klass == Date
Date.new(*values_with_empty_parameters.map { |v| v.nil? ? 1 : v })
else
klass.new(*values)
end
rescue => ex
errors << MultiparameterAssignmentError.new(name, values, ex)
end
end
unless errors.empty?
raise MultiparameterAssignmentErrors.new(errors)
end
attributes
end