Module: Cloneable

Defined in:
lib/standard/facets/cloneable.rb

Instance Method Summary collapse

Instance Method Details

#initialize_copy(sibling) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/standard/facets/cloneable.rb', line 7

def initialize_copy(sibling)
  super
  operation = (
    copy_call  = caller.find{|x| x !~ /'initialize_copy'/}
    copy_match = copy_call.match(/`(dup|clone)'/)
    copy_match ? copy_match[1] : :dup
  )
  sibling.instance_variables.each do |ivar|
    value = sibling.instance_variable_get(ivar)
    instance_variable_set(ivar, value.send(operation))
  end
end