Module: Collapsium::RecursiveDup
- Included in:
- UberHash
- Defined in:
- lib/collapsium/recursive_dup.rb
Overview
Provides recursive (deep) dup function for hashes.
Instance Method Summary collapse
- #recursive_dup ⇒ Object (also: #deep_dup)
Instance Method Details
#recursive_dup ⇒ Object Also known as: deep_dup
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/collapsium/recursive_dup.rb', line 14 def recursive_dup ret = map do |k, v| # Hash values, recurse into them. if v.is_a?(Hash) n = v.dup # we duplicate v to not extend it. n.extend(RecursiveDup) 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 return Hash[ret] end |