diff options
author | Paul Mucur <mudge@mudge.name> | 2010-06-11 23:38:18 +0100 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2010-06-13 04:19:35 +0200 |
commit | 58e21a4a0d4eefc395139e88c1f184b9eaf0b4c4 (patch) | |
tree | b1af32b1a6f57366f6f916c4ffbf516f814483f5 /activesupport/lib/active_support | |
parent | a087bc85fd24e7261ce6a6f63ffa2dbd49db567d (diff) | |
download | rails-58e21a4a0d4eefc395139e88c1f184b9eaf0b4c4.tar.gz rails-58e21a4a0d4eefc395139e88c1f184b9eaf0b4c4.tar.bz2 rails-58e21a4a0d4eefc395139e88c1f184b9eaf0b4c4.zip |
Support passing a block to ActiveSupport::OrderedHash's merge and merge! [#4838 state:committed]
For better consistency with Ruby's own Hash implementation.
Signed-off-by: Xavier Noria <fxn@hashref.com>
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r-- | activesupport/lib/active_support/ordered_hash.rb | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/activesupport/lib/active_support/ordered_hash.rb b/activesupport/lib/active_support/ordered_hash.rb index e1a2866863..eda33f827e 100644 --- a/activesupport/lib/active_support/ordered_hash.rb +++ b/activesupport/lib/active_support/ordered_hash.rb @@ -130,12 +130,16 @@ module ActiveSupport end def merge!(other_hash) - other_hash.each {|k,v| self[k] = v } + if block_given? + other_hash.each {|k,v| self[k] = yield(k, self[k], v) } + else + other_hash.each {|k,v| self[k] = v } + end self end - def merge(other_hash) - dup.merge!(other_hash) + def merge(other_hash, &block) + dup.merge!(other_hash, &block) end # When replacing with another hash, the initial order of our keys must come from the other hash -ordered or not. |