class Scale::Types::MetadataV0Module

Public Class Methods

decode(scale_bytes) click to toggle source
# File lib/metadata/metadata_v0.rb, line 94
def self.decode(scale_bytes)
  prefix = Bytes.decode(scale_bytes).value
  name = Bytes.decode(scale_bytes).value
  call_name = Bytes.decode(scale_bytes).value

  functions = Scale::Types.get("Vec<MetadataV0ModuleFunction>").decode(scale_bytes).value.map(&:value)

  result = {
      prefix: prefix,
      module: {
          name: name,
          call: {
              name: call_name,
              functions: functions
          }
      }
  }

  has_storage = Bool.decode(scale_bytes).value
  if has_storage
    storage_prefix = Bytes.decode(scale_bytes).value
    storage = Scale::Types.get("Vec<MetadataV0ModuleStorage>").decode(scale_bytes).value.map(&:value)
    result[:storage] = {
      prefix: storage_prefix,
      functions: storage
    }
  end

  MetadataV0Module.new(result)
end