Sha256: e68cfe8064c1602d1891f6510fe1e8d10eed374a6304a64b6e4c4c7b7684f465
Contents?: true
Size: 1.02 KB
Versions: 1
Compression:
Stored size: 1.02 KB
Contents
class Hash # Merge the values of this hash with those from another, setting all values # to be arrays representing the values from both hashes. # # { :a=>1, :b=>2 }.collate :a=>3, :b=>4, :c=>5 # #=> { :a=>[1,3], :b=>[2,4], :c=>[5] } # # CREDIT: Gavin Kistner (Phrogz) def collate(other_hash) dup.collate!(other_hash) end # The same as #collate, but modifies the receiver in place. def collate!(other_hash) # Prepare, ensuring every existing key is already an Array each do |key, value| if value.is_a?(Array) self[key] = value else self[key] = [value] end end # Collate with values from other_hash other_hash.each do |key, value| if self[key] if value.is_a?(Array) self[key].concat( value ) else self[key] << value end elsif value.is_a?(Array) self[key] = value else self[key] = [value] end end #each{ |key, value| value.uniq! } if options[ :uniq ] self end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
facets-2.5.0 | lib/core/facets/hash/collate.rb |