Module: BindingDumper::UniversalDumper
- Extended by:
- Memories, UniversalDumper
- Included in:
- UniversalDumper
- Defined in:
- lib/binding_dumper/universal_dumper.rb
Overview
Module that puts together all existing dumpers and wraps their functionality
This dumper can dump and load back any object using system of existing dumpers.
Constant Summary collapse
- DUMPERS_ON_CONVERTING =
[ Dumpers::MagicDumper, Dumpers::ProcDumper, Dumpers::ClassDumper, Dumpers::ArrayDumper, Dumpers::HashDumper, Dumpers::PrimitiveDumper, Dumpers::ObjectDumper ]
- DUMPERS_ON_DECONVERTING =
[ Dumpers::MagicDumper, Dumpers::ExistingObjectDumper, Dumpers::ProcDumper, Dumpers::ArrayDumper, Dumpers::ClassDumper, Dumpers::ObjectDumper, Dumpers::HashDumper, Dumpers::PrimitiveDumper ]
Instance Method Summary collapse
-
#convert(object, dumped_ids = []) ⇒ Hash
Converts passed
objectto marshalable string. -
#converter_for(object, dumped_ids) ⇒ BindingDumper::Dumpers::Abstract
Returns converter that should be applied to provided
object. -
#deconvert(converted_data) ⇒ Object
Deconverts passed
objectto marshalable string. -
#deconverter_for(object) ⇒ BindingDumper::Dumpers::Abstract
Returns deconverter that should be applied to provided
object. -
#dump(object) ⇒ String
Dump passed
objectto string. -
#load(object) ⇒ Object
Loads dumped object back to its original state.
Methods included from Memories
flush_memories!, memories, remember!, with_memories
Instance Method Details
#convert(object, dumped_ids = []) ⇒ Hash
Converts passed object to marshalable string
56 57 58 |
# File 'lib/binding_dumper/universal_dumper.rb', line 56 def convert(object, dumped_ids = []) converter_for(object, dumped_ids).convert end |
#converter_for(object, dumped_ids) ⇒ BindingDumper::Dumpers::Abstract
Returns converter that should be applied to provided object
43 44 45 46 47 |
# File 'lib/binding_dumper/universal_dumper.rb', line 43 def converter_for(object, dumped_ids) DUMPERS_ON_CONVERTING.map { |dumper_klass| dumper_klass.new(object, dumped_ids) }.detect(&:can_convert?) end |
#deconvert(converted_data) ⇒ Object
Deconverts passed object to marshalable string
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/binding_dumper/universal_dumper.rb', line 91 def deconvert(converted_data) deconverter = deconverter_for(converted_data) if deconverter.is_a?(Dumpers::PrimitiveDumper) return deconverter.deconvert end old_object_id = converted_data[:_old_object_id] with_memories(old_object_id) do deconverter.deconvert do |object| remember!(object, old_object_id) end end end |
#deconverter_for(object) ⇒ BindingDumper::Dumpers::Abstract
Returns deconverter that should be applied to provided object
77 78 79 80 81 82 83 |
# File 'lib/binding_dumper/universal_dumper.rb', line 77 def deconverter_for(object) DUMPERS_ON_DECONVERTING.map do |dumper_klass| dumper_klass.new(object) end.detect do |dumper| dumper.can_deconvert? end end |
#dump(object) ⇒ String
Dump passed object to string
66 67 68 69 |
# File 'lib/binding_dumper/universal_dumper.rb', line 66 def dump(object) converted = convert(object) Marshal.dump(converted) end |
#load(object) ⇒ Object
Loads dumped object back to its original state
113 114 115 116 |
# File 'lib/binding_dumper/universal_dumper.rb', line 113 def load(object) converted = Marshal.load(object) deconvert(converted) end |