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