class MT940::Parser

Attributes

transactions[RW]

Public Class Methods

new(file) click to toggle source
# File lib/mt940/parser.rb, line 10
def initialize(file)
  file = File.open(file) if file.is_a?(String) 
  if file.is_a?(File) || file.is_a?(Tempfile)
    process(file)
    file.close
  else
    raise NoFileGiven.new('No file is given!')
  end
end

Private Instance Methods

determine_bank_class(file) click to toggle source
# File lib/mt940/parser.rb, line 37
def determine_bank_class(file)
  first_line = file.readline
  case first_line
  when /^:940:/
    Rabobank
  when /INGBNL/
    Ing
  when /ABNANL/
    Abnamro
  when /^:20:/
    Triodos
  end
end
process(file) click to toggle source
# File lib/mt940/parser.rb, line 22
def process(file)
  begin
    bank_class = determine_bank_class(file)
    instance   = bank_class.new(file)
    instance.parse
    @transactions = instance.transactions
  rescue NoMethodError => exception
     if exception.message == "undefined method `new' for nil:NilClass"
      raise UnknownBank.new('Could not determine bank!') 
    else
      raise exception
    end
  end
end