class EsriShapefile::ByteModel::Field

Constants

TYPES

Attributes

byte_order[R]
name[R]
number[R]
position[R]
type[R]

Public Class Methods

new(name, position:, type:, byte_order:, number: nil) click to toggle source
# File lib/esri_shapefile/byte_model/field.rb, line 12
def initialize(name, position:, type:, byte_order:, number: nil)
  @name = name
  @position = position
  @type = type
  @number = number
  @byte_order = byte_order
end

Public Instance Methods

bytesize(values = {}) click to toggle source
# File lib/esri_shapefile/byte_model/field.rb, line 36
def bytesize(values = {})
  size = TYPES[@type][:bytesize]

  if number_depends_on_field?
    multiplier = TYPES[@type][:unpack][:multiplier] || 1
    number_of_consecutive_values = number_depends_on_field? ? values[number] : number
    number_of_consecutive_values * multiplier * size
  else
    size
  end
end
list?() click to toggle source
# File lib/esri_shapefile/byte_model/field.rb, line 20
def list?
  !@number.nil?
end
number_depends_on_field?() click to toggle source
# File lib/esri_shapefile/byte_model/field.rb, line 28
def number_depends_on_field?
  @number.is_a?(Symbol)
end
unpack_format(values = {}) click to toggle source
# File lib/esri_shapefile/byte_model/field.rb, line 48
def unpack_format(values = {})
  number_of_consecutive_values = number_depends_on_field? ? values[number] : number
  multiplier = TYPES[@type][:unpack][:multiplier] || 1
  unpack_format = TYPES[@type][:unpack][@byte_order]
  "#{unpack_format}#{number_of_consecutive_values * multiplier}"
end
unused?() click to toggle source
# File lib/esri_shapefile/byte_model/field.rb, line 32
def unused?
  name == :unused
end