diff --git a/mrblib/hash.rb b/mrblib/hash.rb index 163079c6f..e57c18212 100644 --- a/mrblib/hash.rb +++ b/mrblib/hash.rb @@ -10,6 +10,9 @@ class Hash include Enumerable ## + # call-seq: + # hash == object -> true or false + # # Equality---Two hashes are equal if they each contain the same number # of keys and if each key-value pair is equal to (according to # Object#==) the corresponding elements in the other @@ -30,6 +33,9 @@ class Hash end ## + # call-seq: + # hash.eql? object -> true or false + # # Returns true if hash and other are # both hashes with the same content compared by eql?. # @@ -48,6 +54,10 @@ class Hash end ## + # call-seq: + # hash.delete(key) -> value or nil + # hash.delete(key) {|key| ... } -> object + # # Delete the element with the key +key+. # Return the value of the element if +key+ # was found. Return nil if nothing was @@ -63,15 +73,14 @@ class Hash end ## - # Calls the given block for each element of +self+ - # and pass the key and value of each element. - # # call-seq: # hsh.each {| key, value | block } -> hsh # hsh.each_pair {| key, value | block } -> hsh # hsh.each -> an_enumerator # hsh.each_pair -> an_enumerator # + # Calls the given block for each element of +self+ + # and pass the key and value of each element. # # If no block is given, an enumerator is returned instead. # @@ -99,13 +108,13 @@ class Hash end ## - # Calls the given block for each element of +self+ - # and pass the key of each element. - # # call-seq: # hsh.each_key {| key | block } -> hsh # hsh.each_key -> an_enumerator # + # Calls the given block for each element of +self+ + # and pass the key of each element. + # # If no block is given, an enumerator is returned instead. # # h = { "a" => 100, "b" => 200 } @@ -125,13 +134,12 @@ class Hash end ## - # Calls the given block for each element of +self+ - # and pass the value of each element. - # # call-seq: - # hsh.each_value {| value | block } -> hsh + # hsh.each_value {| value | block } -> self # hsh.each_value -> an_enumerator # + # Calls the given block with each value; returns +self+: + # # If no block is given, an enumerator is returned instead. # # h = { "a" => 100, "b" => 200 } @@ -151,11 +159,26 @@ class Hash end ## - # Return a hash which contains the content of - # +self+ and +other+. If a block is given - # it will be called for each element with - # a duplicate key. The value of the block - # will be the final value of this element. + # call-seq: + # hsh.merge(other_hash..) -> hsh + # hsh.merge(other_hash..){|key, oldval, newval| block} -> hsh + # + # Returns the new \Hash formed by merging each of +other_hashes+ + # into a copy of +self+. + # + # Each argument in +other_hashes+ must be a \Hash. + # Adds the contents of _other_hash_ to _hsh_. If no block is specified, + # entries with duplicate keys are overwritten with the values from + # _other_hash_, otherwise the value of each duplicate key is determined by + # calling the block with the key, its value in _hsh_ and its value in + # _other_hash_. + # + # Example: + # h = {foo: 0, bar: 1, baz: 2} + # h1 = {bat: 3, bar: 4} + # h2 = {bam: 5, bat:6} + # h3 = h.merge(h1, h2) { |key, old_value, new_value| old_value + new_value } + # h3 # => {:foo=>0, :bar=>5, :baz=>2, :bat=>9, :bam=>5} # # ISO 15.2.13.4.22 def merge(*others, &block)