module Collapsium::RecursiveDup

Provides recursive (deep) dup function for hashes.

Public Instance Methods

deep_dup()
Alias for: recursive_dup
recursive_dup() click to toggle source
# File lib/collapsium/recursive_dup.rb, line 19
def recursive_dup
  ret = map do |k, v|
    # Hash values, recurse into them.
    if v.is_a?(Hash)
      n = ViralCapabilities.enhance_hash_value(self, v)
      next [k, n.recursive_dup]
    end

    begin
      # Other duplicatable values
      next [k, v.dup]
    rescue TypeError
      # Values such as e.g. Fixnum
      next [k, v]
    end
  end
  ret = Hash[ret]
  return ViralCapabilities.enhance_hash_value(self, ret)
end
Also aliased as: deep_dup