class Scale::Types::MetadataV0

Attributes

call_index[RW]
event_index[RW]

Public Class Methods

decode(scale_bytes) click to toggle source
# File lib/metadata/metadata_v0.rb, line 13
def self.decode(scale_bytes)
  value = {
    metadata: {
      version: 0,
      outerEvent: {
        name: Bytes.decode(scale_bytes).value,
        events: []
      },
      modules: [],
      outerDispatch: {
        name: "Call",
        calls: []
      }
    }
  }

  events_modules = Scale::Types.get("Vec<MetadataV0EventModule>").decode(scale_bytes).value.map(&:value)
  modules = Scale::Types.get("Vec<MetadataV0Module>").decode(scale_bytes).value.map(&:value)

  Bytes.decode(scale_bytes).value

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

  value[:metadata][:outerEvent][:events] = events_modules
  value[:metadata][:modules] = modules
  value[:metadata][:outerDispatch][:calls] = sections

  result = MetadataV0.new(value)

  # call_module_index = 0
  # event_module_index = 0

  # modules.map(&:value).each do |m|
    # if m[:calls]
      # m[:calls].each_with_index do |call, index|
        # call[:lookup] = "%02x%02x" % [call_module_index, index]
        # result.call_index[call[:lookup]] = [m, call]
      # end
      # call_module_index += 1
    # end

    # if m[:events]
      # m[:events].each_with_index do |event, index|
        # event[:lookup] = "%02x%02x" % [call_module_index, index]
        # result.event_index[event[:lookup]] = [m, event]
      # end
      # event_module_index += 1
    # end
  # end

  result
end
new(value) click to toggle source
Calls superclass method Scale::Types::Base::new
# File lib/metadata/metadata_v0.rb, line 7
def initialize(value)
  @call_index = {}
  @event_index = {}
  super(value)
end