Module: Ciri::Serialize

Extended by:
Serialize
Included in:
DB::AccountDB, Serialize
Defined in:
lib/ciri/serialize.rb

Instance Method Summary collapse

Instance Method Details

#deserialize(type, item) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/ciri/serialize.rb', line 39

def deserialize(type, item)
  if type == Integer && !item.is_a?(Integer)
    Utils.big_endian_decode(item.to_s)
  elsif type == Types::Address && !item.is_a?(Types::Address)
    # check if address represent in Integer
    item = Utils.big_endian_encode(item) if item.is_a?(Integer)
    Types::Address.new(item.size >= 20 ? item[-20..-1] : item.pad_zero(20))
  elsif type.nil?
    # get serialized word
    serialize(item).rjust(32, "\x00".b)
  else
    item
  end
end

#serialize(item) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/ciri/serialize.rb', line 28

def serialize(item)
  case item
  when Integer
    Utils.big_endian_encode(item)
  when Types::Address
    item.to_s
  else
    item
  end
end