Class: Emeals::MenuParser

Inherits:
Object
  • Object
show all
Defined in:
lib/emeals/menu.rb

Instance Method Summary collapse

Constructor Details

#initialize(menu_text) ⇒ MenuParser

Returns a new instance of MenuParser.



23
24
25
# File 'lib/emeals/menu.rb', line 23

def initialize(menu_text)
  @menu_text = menu_text
end

Instance Method Details

#parseObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/emeals/menu.rb', line 27

def parse
  buffer = []
  meals  = []
  add_to_buffer = false

  @menu_text.split("\n").each do |line|
    if line =~ /Meal (\d+)/
      if add_to_buffer and !buffer.empty?
        meals << Emeals::Meal.parse(buffer.join("\n"))
      end

      add_to_buffer = meals.size < $1.to_i
      buffer = add_to_buffer ? [line] : []
      next unless add_to_buffer
    else
      buffer << line if add_to_buffer
    end
  end

  Emeals::Menu.new(meals)
end