aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/ordered_hash.rb
diff options
context:
space:
mode:
authorPaul Mucur <mudge@mudge.name>2010-06-11 23:38:18 +0100
committerXavier Noria <fxn@hashref.com>2010-06-13 04:19:35 +0200
commit58e21a4a0d4eefc395139e88c1f184b9eaf0b4c4 (patch)
treeb1af32b1a6f57366f6f916c4ffbf516f814483f5 /activesupport/lib/active_support/ordered_hash.rb
parenta087bc85fd24e7261ce6a6f63ffa2dbd49db567d (diff)
downloadrails-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/ordered_hash.rb')
-rw-r--r--activesupport/lib/active_support/ordered_hash.rb10
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.