Module: Scale::Types::Set::ClassMethods

Defined in:
lib/scale/base.rb

Instance Method Summary collapse

Instance Method Details

#decode(scale_bytes) ⇒ Object



358
359
360
361
362
363
364
365
366
# File 'lib/scale/base.rb', line 358

def decode(scale_bytes)
  puts "  BEGIN " + self::TYPE_NAME + ": #{scale_bytes}" if Scale::Types.debug == true
  value = "Scale::Types::U#{self::BYTE_LENGTH * 8}".constantize2.decode(scale_bytes).value
  return new [] unless value || value <= 0

  result = self::ITEMS.select { |_, mask| value & mask > 0 }.keys
  puts "  END " + self::TYPE_NAME + ": #{scale_bytes}" if Scale::Types.debug == true
  new result
end

#items(items, bytes_length = 1) ⇒ Object

items is a hash:

{
  "TransactionPayment" => 0b00000001,
  "Transfer" => 0b00000010,
  "Reserve" => 0b00000100,
  ...
}


375
376
377
378
379
# File 'lib/scale/base.rb', line 375

def items(items, bytes_length = 1)
  raise "byte length is wrong: #{bytes_length}" unless [1, 2, 4, 8, 16].include?(bytes_length)
  const_set(:ITEMS, items)
  const_set(:BYTE_LENGTH, bytes_length)
end