Class: BAI2::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/bai2_ruby/parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(content, time_zone: "+00:00") ⇒ Parser

Returns a new instance of Parser.


5
6
7
8
9
10
# File 'lib/bai2_ruby/parser.rb', line 5

def initialize(content, time_zone: "+00:00")
  @lines = content.split("\n")
  @current_group = nil
   = nil
  @time_zone = time_zone
end

Instance Method Details

#parseObject

rubocop:disable Metrics/AbcSize rubocop:disable Metrics/MethodLength


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/bai2_ruby/parser.rb', line 14

def parse
  file_header = parse_file_header(@lines.shift)
  file_trailer = parse_file_trailer(@lines.pop)

  groups = []

  @lines.each do |line|
    record_code = line[0, 2]
    case record_code
    when "02"
      @current_group = parse_group_header(line)
      groups << @current_group
    when "03"
       = (line)
      @current_group.accounts << 
    when "16"
      transaction = parse_transaction(line)
      .transactions << transaction
    when "49"
      (line)
    when "98"
      parse_group_trailer(line)
    else
      raise BAI2::Error, "Unknown record code: #{record_code}"
    end
  end

  BAI2::File.new(file_header, groups, file_trailer)
end