Module: ActiveSupport::CoreExtensions::Hash::ReverseMerge

Included in:
Hash
Defined in:
lib/active_support/core_ext/hash/reverse_merge.rb

Overview

Allows for reverse merging where its the keys in the calling hash that wins over those in the other_hash. This is particularly useful for initializing an incoming option hash with default values:

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

The default :size and :velocity is only set if the options passed in doesn't already have those keys set.

Instance Method Summary collapse

Instance Method Details

#reverse_merge(other_hash) ⇒ Object

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


14
15
16
# File 'lib/active_support/core_ext/hash/reverse_merge.rb', line 14

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

#reverse_merge!(other_hash) ⇒ Object Also known as: reverse_update

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


20
21
22
# File 'lib/active_support/core_ext/hash/reverse_merge.rb', line 20

def reverse_merge!(other_hash)
  replace(reverse_merge(other_hash))
end