Module: Collapsium::RecursiveDup
- Extended by:
- ViralCapabilities
- Included in:
- EnvironmentOverride, UberHash
- Defined in:
- lib/collapsium/recursive_dup.rb
Overview
Provides recursive (deep) dup function for hashes.
Constant Summary
Constants included from ViralCapabilities
ViralCapabilities::DEFAULT_ANCESTORS, ViralCapabilities::ENHANCED_MARKER, ViralCapabilities::READ_METHODS, ViralCapabilities::WRITE_METHODS
Constants included from Support::Methods
Support::Methods::BUILTINS, Support::Methods::WRAPPER_HASH
Instance Method Summary collapse
- #recursive_dup ⇒ Object (also: #deep_dup)
Methods included from ViralCapabilities
call_virality, copy_mods, enhance, enhance_array_value, enhance_hash_value, enhance_value, extended, extended, included, included, prepended, prepended, set_ancestors
Methods included from Support::Methods
builtins, loop_detected?, repeated, #resolve_helpers, #wrap_method, wrappers
Instance Method Details
#recursive_dup ⇒ Object Also known as: deep_dup
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# 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 |