module ArrPM::V2::Tag::Type

Constants

BINARY
CHAR
I18NSTRING
INT16
INT32
INT64
INT8
NULL
STRING
STRING_ARRAY
TYPE_MAP

Public Class Methods

parse(data, type, offset, count) click to toggle source
# File lib/arr-pm/v2/tag.rb, line 18
def self.parse(data, type, offset, count)
  case type
    when NULL
      nil
    when CHAR
      data[offset, count].unpack("A#{count}")
    when INT8
      data[offset, count].unpack("C" * count)
    when INT16
      data[offset, 2 * count].unpack("n" * count)
    when INT32
      data[offset, 4 * count].unpack("N" * count)
    when INT64
      a, b = data[offset, 8].unpack("NN")
      a << 32 + b
    when STRING, I18NSTRING
      data[offset..-1][/^[^\0]*/]
    when BINARY
      data[offset, count]
    when STRING_ARRAY
      data[offset..-1].split("\0")[0...count]
    else
      raise ArrPM::V2::Error::InvalidType, type
  end
end