Module: DeepDive

Includes:
API
Defined in:
lib/deep_dive/deep_dive.rb

Defined Under Namespace

Modules: API, CMeth Classes: DeepDiveException

Class Method Summary collapse

Instance Method Summary collapse

Methods included from API

#dclone, #ddup

Class Method Details

.included(base) ⇒ Object



142
143
144
# File 'lib/deep_dive/deep_dive.rb', line 142

def self.included(base)
  base.extend(CMeth)
end

.inherited(sub) ⇒ Object



146
147
148
# File 'lib/deep_dive/deep_dive.rb', line 146

def self.inherited(sub)
  sub.include(DeepDive)
end

Instance Method Details

#_replicate(dupit: true, oc: {}) ⇒ Object

Not meant to be called externally. Use either ddup or dclone.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/deep_dive/deep_dive.rb', line 44

def _replicate(dupit: true, oc: {})
  unless oc.member? self
    copy = oc[self] = if dupit
                        dup
                      else
                        clone
                      end
    copy.instance_variables.map do |var|
      [var, instance_variable_get(var)]
    end.reject do |var, ob|
      not ob.respond_to? :_replicate
    end.reject do |var, ob|
      self.class.excluded?(var, self)
    end.each do |var, value|
      copy.instance_variable_set(var, value._replicate(oc: oc, dupit: dupit))
    end
  end
  oc[self]
end