+ terms = characterization_terms
Sufia.config.fits_to_desc_mapping.each_pair do |k, v|
- if terms.has_key?(k)
- # coerce to array to remove a conditional
- terms[k] = [terms[k]] unless terms[k].is_a? Array
- terms[k].each do |term_value|
- proxy_term = self.send(v)
- if proxy_term.kind_of?(Array)
- proxy_term << term_value unless proxy_term.include?(term_value)
- else
- # these are single-valued terms which cannot be appended to
- self.send("#{v}=", term_value)
- end
+ next unless terms.key?(k)
+ Array.wrap(terms[k]).each do |term_value|
+ proxy_term = send(v)
+ if proxy_term.is_a?(Array)
+ proxy_term << term_value unless proxy_term.include?(term_value)
+ else
+ # these are single-valued terms which cannot be appended to
+ send("#{v}=", term_value)
end
end
Not sure if the following lines are equivalent. Does Array.wrap ignore values that are array's themselves?
terms[k] = [terms[k]] unless terms[k].is_a? Array
Array.wrap(terms[k]).each do |term_value|
Array.wrap(x)
returnsx
ifx
is already an array and otherwise returns[x]
. it never returns[[x]]
.