Class: Athena::Formats::Sisis

Inherits:
Base
  • Object
show all
Defined in:
lib/athena/formats/sisis.rb

Defined Under Namespace

Classes: IllegalRecordElementError, NoRecordElementError

Instance Method Summary collapse

Methods inherited from Base

#convert, #deferred?, formats, valid_format?, #wrap

Instance Method Details

#parse(source, &block) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/athena/formats/sisis.rb', line 55

def parse(source, &block)
  record, num = nil, 0

  source.each { |line|
    element, value = line.match(/(\d+).*?:\s*(.*)/)[1, 2]

    case element
      when record_element
        record.close if record
        record = Athena::Record.new(value, block)
        num += 1
      else
        record.update(element, value, config[element])
    end
  }

  record.close if record

  num
end