def parse!
      self.fields = []

      # split transactions, each transaction starts with a colon after a linebreak
      # do not remove line breaks within transaction lines as they are used to determine field details
      # e.g. :61:-supplementary
      source.split("\n:").each(&:strip!).each do |line|
        line = ":#{line}" unless line =~ /^:/ # prepend lost : via split

        if line =~ /\A:86:/
          if field = fields.last
            field.add_meta_data(line)
          end
        else
          field = Field.parse(line)
          fields << field unless field.nil?
        end
      end
    end
def parse!
      self.fields = []

      # split transactions, each transaction starts with a colon after a linebreak
      # do not remove line breaks within transaction lines as they are used to determine field details
      # e.g. :61:-supplementary
      source.split("\n:").each(&:strip!).each do |line|
        line = ":#{line}" unless line =~ /^:/ # prepend lost : via split

        if line =~ /\A:86:/
          if field = fields.last
            field.add_meta_data(line)
          end
        else
          field = Field.parse(line)
          fields << field unless field.nil?
        end
      end
    end
Internal: Parse a single MT940 statement and extract the line data