Class: BindingDumper::Dumpers::ArrayDumper

Inherits:
Abstract
  • Object
show all
Defined in:
lib/binding_dumper/dumpers/array_dumper.rb

Overview

Class responsible for converting arrays to marshalable Hash

Examples:

array = [1,2,3]
dump = BindingDumper::Dumpers::Array.new(array).convert
# => { marshalable: :hash }
BindingDumper::Dumpers::Array.new(dump).deconvert
# => [1,2,3]

Instance Attribute Summary

Attributes inherited from Abstract

#dumped_ids

Instance Method Summary collapse

Methods inherited from Abstract

#initialize

Constructor Details

This class inherits a constructor from BindingDumper::Dumpers::Abstract

Instance Method Details

#can_convert?true, false

Returns true if ArrayDumper can convert abstract_object

Returns:

  • (true, false)


18
19
20
# File 'lib/binding_dumper/dumpers/array_dumper.rb', line 18

def can_convert?
  array.is_a?(Array)
end

#can_deconvert?true, false

Returns true if ArrayDumper can deconvert abstract_object

Returns:

  • (true, false)


26
27
28
# File 'lib/binding_dumper/dumpers/array_dumper.rb', line 26

def can_deconvert?
  array.is_a?(Array)
end

#convertHash

Converts abstract_object to marshalable Hash

Returns:

  • (Hash)


34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/binding_dumper/dumpers/array_dumper.rb', line 34

def convert
  unless should_convert?
    return { _existing_object_id: array.object_id }
  end

  dumped_ids << array.object_id

  result = array.map do |item|
    UniversalDumper.convert(item, dumped_ids)
  end

  {
    _old_object_id: array.object_id,
    _object_data: result
  }
end

#deconvert {|result| ... } ⇒ Array

Deconverts passed abstract_object back to the original state

Yields:

  • (result)

Returns:

  • (Array)


55
56
57
58
59
60
61
62
# File 'lib/binding_dumper/dumpers/array_dumper.rb', line 55

def deconvert
  result = []
  yield result
  array.each do |converted_item|
    result << UniversalDumper.deconvert(converted_item)
  end
  result
end