Class: BindingDumper::Dumpers::ObjectDumper
- Defined in:
- lib/binding_dumper/dumpers/object_dumper.rb
Overview
Class responsible for converting objects to marshalable Hash
Instance Attribute Summary
Attributes inherited from Abstract
Instance Method Summary collapse
-
#can_convert? ⇒ true, false
Returns true if ObjectDumper can convert passed
abstract_object. -
#can_deconvert? ⇒ true, false
Returns true if ObjectDumper can deconvert passed
abstract_object. -
#convert ⇒ Hash
Converts passed
abstract_objectto marshalable Hash. -
#deconvert ⇒ Object
Deconverts passed
abstract_objectback to the original state.
Methods inherited from Abstract
Constructor Details
This class inherits a constructor from BindingDumper::Dumpers::Abstract
Instance Method Details
#can_convert? ⇒ true, false
Returns true if ObjectDumper can convert passed abstract_object
18 19 20 |
# File 'lib/binding_dumper/dumpers/object_dumper.rb', line 18 def can_convert? true end |
#can_deconvert? ⇒ true, false
Returns true if ObjectDumper can deconvert passed abstract_object
26 27 28 29 30 31 32 33 |
# File 'lib/binding_dumper/dumpers/object_dumper.rb', line 26 def can_deconvert? abstract_object.is_a?(Hash) && ( abstract_object.has_key?(:_klass) || abstract_object.has_key?(:_object) || abstract_object.has_key?(:_old_object_id) ) end |
#convert ⇒ Hash
Converts passed abstract_object to marshalable Hash
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/binding_dumper/dumpers/object_dumper.rb', line 39 def convert unless should_convert? return { _existing_object_id: object.object_id } end if can_be_fully_dumped?(object) { _object: object } elsif undumpable?(object) { _klass: object.class, _undumpable: true } else dumped_ids << object.object_id { _klass: object.class, _ivars: converted_ivars(dumped_ids), _old_object_id: object.object_id } end end |
#deconvert ⇒ Object
Deconverts passed abstract_object back to the original state
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/binding_dumper/dumpers/object_dumper.rb', line 67 def deconvert if object.has_key?(:_object) object[:_object] else klass = object[:_klass] result = klass.allocate return result if object[:_undumpable] yield result object[:_ivars].each do |ivar_name, converted_ivar| ivar = UniversalDumper.deconvert(converted_ivar) result.instance_variable_set(ivar_name, ivar) end if result.respond_to?(:restored_from_binding) result.restored_from_binding end result end end |