class Scale::Types::MetadataV6Module

Public Class Methods

decode(scale_bytes) click to toggle source
# File lib/metadata/metadata_v6.rb, line 53
def self.decode(scale_bytes)
  name = String.decode(scale_bytes).value
  prefix = String.decode(scale_bytes).value

  result = {
    name: name,
    prefix: prefix
  }

  has_storage = Bool.decode(scale_bytes).value
  if has_storage
    storages = Scale::Types.get("Vec<MetadataV6ModuleStorage>").decode(scale_bytes).value
    result[:storage] = storages.map(&:value)
  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<MetadataV6ModuleConstants>").decode(scale_bytes).value.map(&:value)

  MetadataV6Module.new(result)
end