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
-
#_replicate(dupit: true, oc: {}) ⇒ Object
Not meant to be called externally.
Methods included from API
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 |