class DietaryDsl::Menu

Clase que representa un menú. Un menú se compone de distintos platos (entrantes, primeros platos, postres…)

Attributes

title[R]

Public Class Methods

new(title, &block) click to toggle source
# File lib/dietary_dsl/dsl/menu.rb, line 12
def initialize(title, &block)
  @title = title
  @platos = []
  instance_eval(&block)
end

Public Instance Methods

[](key) click to toggle source
# File lib/dietary_dsl/dsl/menu.rb, line 18
def [](key)
  @platos[key]
end
each() { |i| ... } click to toggle source
# File lib/dietary_dsl/dsl/menu.rb, line 22
def each
  @platos.each { |i| yield i }
end
kcal() click to toggle source
# File lib/dietary_dsl/dsl/menu.rb, line 43
def kcal
  @platos.inject(0) do |sum, plato_y_cantidad|
    plato = plato_y_cantidad[:plato]
    racion = plato_y_cantidad[:racion]
    sum + racionar(plato, racion)
  end
end
plato(datos, options = {}) click to toggle source
# File lib/dietary_dsl/dsl/menu.rb, line 26
def plato(datos, options = {})
  return plato_single(datos) if datos.is_a?(Hash)
  @platos = @platos.push(plato: datos, racion: options[:racion])
end
plato_single(datos) click to toggle source
# File lib/dietary_dsl/dsl/menu.rb, line 31
def plato_single(datos)
  @platos = @platos.push(plato: DietaryDsl::Plato.new(datos[:food]) { alimento(datos) })
end
racionar(plato, racion) click to toggle source
# File lib/dietary_dsl/dsl/menu.rb, line 35
def racionar(plato, racion)
  if racion.nil?
    plato.kcal
  else
    ((racion.to.g * plato.kcal) / plato.masa.to.g)
  end
end