Class: Object

Inherits:
BasicObject
Defined in:
lib/full_clone/object.rb

Instance Method Summary collapse

Instance Method Details

#full_clone(progress = {}) ⇒ Object

The full_clone method for most objects.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/full_clone/object.rb', line 9

def full_clone(progress={})
  progress[object_id] = result = clone
  exclude = full_clone_exclude

  if exclude.empty?
    instance_variables.each do |name|
      value = result.instance_variable_get(name)
      value = progress[value.object_id] || value.full_clone(progress)
      result.instance_variable_set(name, value)
    end
  else
    instance_variables.each do |name|
      unless exclude.include?(name)
        value = result.instance_variable_get(name)
        value = progress[value.object_id] || value.full_clone(progress)
        result.instance_variable_set(name, value)
      end
    end
  end

  result
end

#full_clone_excludeObject

By default, no instance variables are excluded.



4
5
6
# File 'lib/full_clone/object.rb', line 4

def full_clone_exclude
  []
end