Class: DBF::Header

Inherits:
Object
  • Object
show all
Defined in:
lib/dbf/header.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Header

Returns a new instance of Header.



5
6
7
8
# File 'lib/dbf/header.rb', line 5

def initialize(data)
  @data = data
  unpack_header
end

Instance Attribute Details

#encodingObject (readonly)

Returns the value of attribute encoding.



3
4
5
# File 'lib/dbf/header.rb', line 3

def encoding
  @encoding
end

#encoding_keyObject (readonly)

Returns the value of attribute encoding_key.



3
4
5
# File 'lib/dbf/header.rb', line 3

def encoding_key
  @encoding_key
end

#header_lengthObject (readonly)

Returns the value of attribute header_length.



3
4
5
# File 'lib/dbf/header.rb', line 3

def header_length
  @header_length
end

#record_countObject (readonly)

Returns the value of attribute record_count.



3
4
5
# File 'lib/dbf/header.rb', line 3

def record_count
  @record_count
end

#record_lengthObject (readonly)

Returns the value of attribute record_length.



3
4
5
# File 'lib/dbf/header.rb', line 3

def record_length
  @record_length
end

#versionObject (readonly)

Returns the value of attribute version.



3
4
5
# File 'lib/dbf/header.rb', line 3

def version
  @version
end

Instance Method Details

#unpack_headerObject



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/dbf/header.rb', line 10

def unpack_header
  @version = @data.unpack1('H2')

  case @version
  when '02'
    @record_count, @record_length = @data.unpack('x v x3 v')
    @header_length = 521
  else
    @record_count, @header_length, @record_length, @encoding_key = @data.unpack('x x3 V v2 x17 H2')
    @encoding = DBF::ENCODINGS[@encoding_key]
  end
end