Class: Scale::Types::MetadataV12Module

Inherits:
Object
  • Object
show all
Includes:
Base
Defined in:
lib/metadata/metadata_v12.rb

Instance Attribute Summary

Attributes included from Base

#value

Class Method Summary collapse

Methods included from Base

#==, included, #initialize, #to_human

Class Method Details

.decode(scale_bytes) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/metadata/metadata_v12.rb', line 52

def self.decode(scale_bytes)
  name = String.decode(scale_bytes).value

  result = {
    name: name
  }

  has_storage = Bool.decode(scale_bytes).value
  if has_storage
    storage = MetadataV7ModuleStorage.decode(scale_bytes).value
    result[:storage] = storage
    result[:prefix] = storage[:prefix]
  end

  has_calls = Bool.decode(scale_bytes).value
  if has_calls
    calls = Scale::Types.get("Vec<MetadataModuleCall>").decode(scale_bytes).value
    result[:calls] = calls.map(&:value)
  end

  has_events = Bool.decode(scale_bytes).value
  if has_events
    events = Scale::Types.get("Vec<MetadataModuleEvent>").decode(scale_bytes).value
    result[:events] = events.map(&:value)
  end

  result[:constants] = Scale::Types.get("Vec<MetadataV7ModuleConstants>").decode(scale_bytes).value.map(&:value)
  result[:errors] = Scale::Types.get("Vec<MetadataModuleError>").decode(scale_bytes).value.map(&:value)

  result[:index] = U8.decode(scale_bytes).value
  MetadataV12Module.new(result)
end