Class: HarvardDishDSL

Inherits:
Object
  • Object
show all
Defined in:
lib/dsl/harvard_dish.rb

Constant Summary collapse

@@ingredient_database =
read_ingredient_database(INGREDIENT_DATABASE_FILENAME)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dish_title, &block) ⇒ HarvardDishDSL

Returns a new instance of HarvardDishDSL.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/dsl/harvard_dish.rb', line 19

def initialize(dish_title, &block)
  @dish_title = dish_title
  @ingredient_quantity_array = [] # Arrays of pairs ingredient name and quantity
  @number_of_people = 0
  
  if block_given?
    if block.arity == 1
      yield self
    else
      instance_eval(&block)
    end
  end
  
end

Instance Attribute Details

#dish_titleObject (readonly)

Returns the value of attribute dish_title.



15
16
17
# File 'lib/dsl/harvard_dish.rb', line 15

def dish_title
  @dish_title
end

#ingredient_quantity_arrayObject (readonly)

Returns the value of attribute ingredient_quantity_array.



15
16
17
# File 'lib/dsl/harvard_dish.rb', line 15

def ingredient_quantity_array
  @ingredient_quantity_array
end

Instance Method Details

#aceite(ingredient_name, options = {}) ⇒ Object



72
73
74
75
# File 'lib/dsl/harvard_dish.rb', line 72

def aceite (ingredient_name, options = {})
  ingredient_quantity = analyze_options(options)
  @ingredient_quantity_array.push([ingredient_name, ingredient_quantity])
end

#cereal(ingredient_name, options = {}) ⇒ Object



62
63
64
65
# File 'lib/dsl/harvard_dish.rb', line 62

def cereal (ingredient_name, options = {})
  ingredient_quantity = analyze_options(options)
  @ingredient_quantity_array.push([ingredient_name, ingredient_quantity])
end

#fruta(ingredient_name, options = {}) ⇒ Object



57
58
59
60
# File 'lib/dsl/harvard_dish.rb', line 57

def fruta (ingredient_name, options = {})
  ingredient_quantity = analyze_options(options)
  @ingredient_quantity_array.push([ingredient_name, ingredient_quantity])
end

#personas(number_of_people) ⇒ Object



77
78
79
# File 'lib/dsl/harvard_dish.rb', line 77

def personas (number_of_people)
  @number_of_people = number_of_people
end

#proteina(ingredient_name, options = {}) ⇒ Object



67
68
69
70
# File 'lib/dsl/harvard_dish.rb', line 67

def proteina (ingredient_name, options = {})
  ingredient_quantity = analyze_options(options)
  @ingredient_quantity_array.push([ingredient_name, ingredient_quantity])
end

#to_sObject



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/dsl/harvard_dish.rb', line 34

def to_s
  rows = []
  total_energetic_content = 0
  
  @ingredient_quantity_array.each { |ingredient_name, ingredient_quantity|
    @food = @@ingredient_database[ingredient_name] * ingredient_quantity
    rows << [@food.name, ingredient_quantity*10, @food.glucid_quantity, @food.protein_quantity, @food.lipid_quantity, @food.energetic_content]
    total_energetic_content += @food.energetic_content
  }
  
  rows << ['Valor Energético Total', '', '', '', '', total_energetic_content]
  
  # Gema para tabla usada -> https://github.com/tj/terminal-table
  return Terminal::Table.new(:title => @dish_title, 
                             :headings => [' ', 'Gramos', 'Glúcidos', 'Proteínas', 'Lípidos', 'Valor Energético'], 
                             :rows => rows)
end

#vegetal(ingredient_name, options = {}) ⇒ Object



52
53
54
55
# File 'lib/dsl/harvard_dish.rb', line 52

def vegetal (ingredient_name, options = {})
  ingredient_quantity = analyze_options(options)
  @ingredient_quantity_array.push([ingredient_name, ingredient_quantity])
end