Module: Scale::Types::Option::ClassMethods

Defined in:
lib/scale/base.rb

Instance Method Summary collapse

Instance Method Details

#decode(scale_bytes) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/scale/base.rb', line 56

def decode(scale_bytes)
  puts "BEGIN " + self::TYPE_NAME + ": #{scale_bytes}" if Scale::Types.debug == true
  byte = scale_bytes.get_next_bytes(1)
  if byte == [0]
    puts "  END " + self::TYPE_NAME + ": #{scale_bytes}" if Scale::Types.debug == true
    new(nil)
  elsif byte == [1]
    # big process
    type = 
      if self::INNER_TYPE.class == ::String
        Scale::Types.get(self::INNER_TYPE)
      else
        self::INNER_TYPE
      end
    value = type.decode(scale_bytes)
    puts "  END " + self::TYPE_NAME + ": #{scale_bytes}" if Scale::Types.debug == true
    new(value)
  else
    raise BadDataError.new("Bad scale data for #{self::TYPE_NAME}")
  end
end

#inner_type(type) ⇒ Object



78
79
80
# File 'lib/scale/base.rb', line 78

def inner_type(type)
  const_set(:INNER_TYPE, type)
end