Class: FixedWidthFileValidator::RecordParser

Inherits:
Object
  • Object
show all
Defined in:
lib/fixed_width_file_validator/record_parser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(field_list, encoding) ⇒ RecordParser

Returns a new instance of RecordParser.



5
6
7
8
# File 'lib/fixed_width_file_validator/record_parser.rb', line 5

def initialize(field_list, encoding)
  @field_list = field_list
  @encoding = encoding || 'ISO-8859-1'
end

Instance Attribute Details

#encodingObject (readonly)

Returns the value of attribute encoding.



3
4
5
# File 'lib/fixed_width_file_validator/record_parser.rb', line 3

def encoding
  @encoding
end

#field_listObject (readonly)

Returns the value of attribute field_list.



3
4
5
# File 'lib/fixed_width_file_validator/record_parser.rb', line 3

def field_list
  @field_list
end

Instance Method Details

#parse(line, line_num = 0, raw_line = '_NA_') ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/fixed_width_file_validator/record_parser.rb', line 10

def parse(line, line_num = 0, raw_line = '_NA_')
  record = { _line_num: line_num, _raw: raw_line }
  encoded = line.encode(@encoding, 'binary', invalid: :replace, undef: :replace)
  field_list.each do |field|
    record[field[:name].to_sym] = encoded[field[:position]].nil? ? nil : encoded[field[:position]].strip
  end
  record
end