Module: ActiveTools::CoreExtension::DeepCopy::ArrayExtension

Defined in:
lib/active_tools/core_extension/deep_copy.rb

Instance Method Summary collapse

Instance Method Details

#deep_copy(&block) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/active_tools/core_extension/deep_copy.rb', line 22

def deep_copy(&block)
  self.class.new.tap do |new_array|
    each do |v|
      new_array << case v
      when Hash, Array, Set then v.deep_copy(&block)
      else
        block_given? ? yield(v) : v.dup rescue v
      end
    end
  end
end