Sha256: 1123127d61d1b2736e812dc905c6b9d033060674491b804989c727585172c9a5

Contents?: true

Size: 766 Bytes

Versions: 28

Compression:

Stored size: 766 Bytes

Contents

# originally taken from: https://github.com/rails/rails/blob/main/activesupport/lib/active_support/core_ext/object/deep_dup.rb

class Object
  # Returns a deep copy of object if it's duplicable. If it's
  # not duplicable, returns +self+.
  #
  #   object = Object.new
  #   dup    = object.deep_dup
  #   dup.instance_variable_set(:@a, 1)
  #
  #   object.instance_variable_defined?(:@a) # => false
  #   dup.instance_variable_defined?(:@a)    # => true
  def deep_dup
    duplicable? ? dup : self
  end
end

class Array
  # Returns a deep copy of array.
  #
  #   array = [1, [2, 3]]
  #   dup   = array.deep_dup
  #   dup[1][2] = 4
  #
  #   array[1][2] # => nil
  #   dup[1][2]   # => 4
  def deep_dup
    map(&:deep_dup)
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
isomorfeus-transport-23.9.0.rc12 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.9.0.rc11 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.9.0.rc10 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.9.0.rc9 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.9.0.rc8 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.9.0.rc7 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.9.0.rc6 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.9.0.rc5 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.9.0.rc4 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.9.0.rc3 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.9.0.rc2 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.9.0.rc1 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.8.0.rc3 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.8.0.rc2 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.8.0.rc1 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.7.0.rc5 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.7.0.rc4 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.7.0.rc3 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.7.0.rc2 lib/isomorfeus/core_ext/object/deep_dup.rb
isomorfeus-transport-23.7.0.rc1 lib/isomorfeus/core_ext/object/deep_dup.rb