class DietaryDsl::Plato

Clase que representa un plato. Un plato es una comida especĂ­fica, como pulpo a la gallega, o un potaje

Attributes

title[R]

Public Class Methods

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

Public Instance Methods

[](key) click to toggle source
# File lib/dietary_dsl/dsl/plato.rb, line 18
def [](key)
  @alimentos[key]
end
alimento(datos) click to toggle source
# File lib/dietary_dsl/dsl/plato.rb, line 26
def alimento(datos)
  alimento = DietaryDsl::Alimento.new(datos[:food], datos)
  cantidad = datos[:cantidad]
  @alimentos = @alimentos.push food: alimento, cantidad: cantidad
end
each() { |i| ... } click to toggle source
# File lib/dietary_dsl/dsl/plato.rb, line 22
def each
  @alimentos.each { |i| yield i }
end
kcal() click to toggle source
# File lib/dietary_dsl/dsl/plato.rb, line 32
def kcal
  @alimentos.inject(0) do |sum, item|
    cantidad = item[:cantidad]
    kilocalorias = item[:food].kcal

    is_mass = cantidad.instance_of? DietaryDsl::Masa
    gramos = cantidad.to.g if is_mass
    gramos = cantidad.to.cm3 unless is_mass
    kcal_totales = ((gramos * kilocalorias) / 100)
    sum + kcal_totales
  end
end
kcal_por_cada(cantidad) click to toggle source
# File lib/dietary_dsl/dsl/plato.rb, line 45
def kcal_por_cada(cantidad)
  (kcal * cantidad.to.g) / masa.to.g
end
masa() click to toggle source
# File lib/dietary_dsl/dsl/plato.rb, line 49
def masa
  gr = @alimentos.inject(0) do |sum, item|
    is_mass = item[:cantidad].instance_of? DietaryDsl::Masa
    gramos = item[:cantidad].to.g if is_mass
    gramos = item[:cantidad].to.cm3 unless is_mass
    sum + gramos
  end

  DietaryDsl::Masa.new(gr)
end
single?() click to toggle source
# File lib/dietary_dsl/dsl/plato.rb, line 71
def single?
  @alimentos.length == 1
end
to_s() click to toggle source
# File lib/dietary_dsl/dsl/plato.rb, line 60
    def to_s
      alimentos = @alimentos
                  .map { |data| "* #{data[:food][:nombre]}" }
                  .join("\n")

      <<~OUTPUT
        #{@title}
        #{alimentos}
      OUTPUT
    end