Class: Hash

Inherits:
Object show all
Defined in:
lib/core_ext/deep_dup.rb

Direct Known Subclasses

Statinize::Errors

Instance Method Summary collapse

Instance Method Details

#deep_dupObject

Returns a deep copy of hash.

hash = { a: { b: 'b' } }
dup  = hash.deep_dup
dup[:a][:c] = 'c'

hash[:a][:c] # => nil
dup[:a][:c]  # => "c"


41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/core_ext/deep_dup.rb', line 41

def deep_dup
  hash = dup
  each_pair do |key, value|
    if ::String === key || ::Symbol === key
      hash[key] = value.deep_dup
    else
      hash.delete(key)
      hash[key.deep_dup] = value.deep_dup
    end
  end
  hash
end