class BindingDumper::Dumpers::HashDumper
Class responsible for converting arbitary hashes to marshalable hashes
@example
hash = { key: 'value' } dump = BindingDumper::Dumpers::HashDumper.new(hash).convert BindingDumper::Dumpers::HashDumper.new(dump).deconvert # => { key: 'value' }
Public Instance Methods
can_convert?()
click to toggle source
Returns true if HashDumper
can convert passed abstract_object
@return [true, false]
# File lib/binding_dumper/dumpers/hash_dumper.rb, line 17 def can_convert? hash.is_a?(Hash) end
can_deconvert?()
click to toggle source
Returns true if HashDumper
can deconvert passed abstract_object
@return [true, false]
# File lib/binding_dumper/dumpers/hash_dumper.rb, line 25 def can_deconvert? abstract_object.is_a?(Hash) end
convert()
click to toggle source
Converts passed abstract_object
to marshalable Hash
@return [Hash]
# File lib/binding_dumper/dumpers/hash_dumper.rb, line 33 def convert unless should_convert? return { _existing_object_id: hash.object_id } end dumped_ids << hash.object_id prepared = hash.map do |k, v| converted_k = UniversalDumper.convert(k, dumped_ids) converted_v = UniversalDumper.convert(v, dumped_ids) [converted_k, converted_v] end result = Hash[prepared] { _old_object_id: hash.object_id, _object_data: result } end
deconvert() { |result| ... }
click to toggle source
Deconverts passed abstract_object
back to the original state
@return [Hash]
# File lib/binding_dumper/dumpers/hash_dumper.rb, line 58 def deconvert result = {} yield result hash.each do |converted_k, converted_v| k = UniversalDumper.deconvert(converted_k) v = UniversalDumper.deconvert(converted_v) result[k] = v end result end