Module: Gorillib::Hashlike::ReverseMerge

Included in:
Hash
Defined in:
lib/gorillib/hashlike/reverse_merge.rb

Instance Method Summary collapse

Instance Method Details

#reverse_merge(other_hash) ⇒ Object

Allows for reverse merging two hashes where the keys in the calling hash take precedence over those in the other_hash. This is particularly useful for initializing an option hash with default values:

def setup(options = {})
  options.reverse_merge! :size => 25, :velocity => 10
end

Using merge, the above example would look as follows:

def setup(options = {})
  { :size => 25, :velocity => 10 }.merge(options)
end

The default :size and :velocity are only set if the options hash passed in doesn’t already have the respective key.



19
20
21
# File 'lib/gorillib/hashlike/reverse_merge.rb', line 19

def reverse_merge(other_hash)
  other_hash.merge(self)
end

#reverse_merge!(other_hash) ⇒ Object

Performs the opposite of merge, with the keys and values from the first hash taking precedence over the second. Modifies the receiver in place.



25
26
27
# File 'lib/gorillib/hashlike/reverse_merge.rb', line 25

def reverse_merge!(other_hash)
  merge!( other_hash ){|k,o,n| o }
end