Module: ActiveTools::CoreExtension::DeepCopy::SetExtension

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

Instance Method Summary collapse

Instance Method Details

#deep_copy(&block) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/active_tools/core_extension/deep_copy.rb', line 36

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