Module: Musa::Extension::DeepCopy::DeepCopy

Extended by:
DeepCopy
Included in:
DeepCopy
Defined in:
lib/musa-dsl/core-ext/deep-copy.rb

Instance Method Summary collapse

Instance Method Details

#copy_singleton_class_modules(source, target) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/musa-dsl/core-ext/deep-copy.rb', line 17

def copy_singleton_class_modules(source, target)
  source.singleton_class.included_modules.each do |m|
    target.extend m unless target.is_a?(m)
  end

  target
end

#deep_copy(object, method: :dup, freeze: true) ⇒ Object

Raises:

  • (ArgumentError)


10
11
12
13
14
15
# File 'lib/musa-dsl/core-ext/deep-copy.rb', line 10

def deep_copy(object, method: :dup, freeze: true)
  raise ArgumentError, "deep_copy method can only be :dup or :clone" unless method == :dup || method == :clone
  register = {}

  _deep_copy(register, object, method, freeze)
end