Class: Scale::Types::MetadataV13Module

Inherits:
Object
  • Object
show all
Includes:
Base
Defined in:
lib/metadata/metadata_v13.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



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/metadata/metadata_v13.rb', line 127

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 = MetadataV13ModuleStorage.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
  MetadataV13Module.new(result)
end