Method: Sie::Parser#parse

Defined in:
lib/sie/parser.rb

#parse(io) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/sie/parser.rb', line 18

def parse(io)
  stack = []
  sie_file = SieFile.new
  current = sie_file

  io.each_line do |line|
    line = line.chomp

    case line
    when BEGINNING_OF_ARRAY
      stack << current
      current = current.entries.last
    when END_OF_ARRAY
      current = stack.pop
    when ENTRY
      current.entries << parse_line(line)
    end
  end

  sie_file
end