module Scale::Types::Struct::ClassMethods

new(1.to_u32, U32(69))

Public Instance Methods

decode(scale_bytes) click to toggle source
# File lib/scale/base.rb, line 166
def decode(scale_bytes)
  puts "BEGIN " + self::TYPE_NAME + ": #{scale_bytes}" if Scale::Types.debug == true

  # item_values:
  # {
  #   a: ...,
  #   b: ...
  # }
  item_values = {}
  self::ITEMS.each_pair do |item_name, item_type|
    if item_type.class == ::String
      item_type = Scale::Types.get(item_type)
    end
    item_values[item_name] = item_type.decode(scale_bytes)
  end

  # value = {}
  # self::ITEM_NAMES.zip(item_values) do |attr, val|
  #   value[attr] = val
  # end

  puts "  END " + self::TYPE_NAME + ": #{scale_bytes}" if Scale::Types.debug == true

  result = new(item_values)
  item_values.each_pair do |item_name, item_value|
    result.send "#{item_name.to_s}=", item_value
  end

  result
end
inherited(child) click to toggle source
# File lib/scale/base.rb, line 162
def inherited(child)
  child.const_set(:TYPE_NAME, child.name)
end
items(**items) click to toggle source

items(a: Scale::Types::Type1, b: “Type2”)

# File lib/scale/base.rb, line 198
def items(**items)
  const_set(:ITEMS, items)
  item_names = items.keys
  attr_accessor *item_names
end