Method: Mafti#parse

Defined in:
lib/mafti.rb

#parseObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/mafti.rb', line 14

def parse
  @lines.each_with_index do |line, n|
    line = line.strip 
    case line
    
    when /^$/                  # '' (empty line)
      next
    when /^#.*$/               # '# Foo bar baz!' (a comment)
      next
    when /^-+$/                # '---------------------' (divider)
      next
    when /^(\|[^\|]*)*\|$/     # '| Foo   | Bar   | Baz   |' (valid data)
      new_data = parse_valid_line(line)
      unless headers_recorded?
        @headers = new_data
      else
        @data   << new_data
      end
    else
      raise "Line #{n} was invalid: #{line}"
    end
  end
end