class Alimento::Plato

Esta clase permite representar un plato

Attributes

aceites[RW]
frutas[RW]
granos[RW]
name[RW]
proteinas[RW]
vegetales[RW]

Public Class Methods

new(name) { |self| ... } click to toggle source

Se guarda el nombre del plato y se recibe un bloque con los ingredientes

# File lib/plato/fuente.rb, line 10
def initialize(name, &block)
  @name = name
  @vegetales = []
  @frutas = []
  @granos = []
  @proteinas = []
  @aceites = []

  if block_given?
    if block.arity == 1
      yield self
    else
      instance_eval(&block)
    end
  end
end

Public Instance Methods

ingrediente(grupo, nombre, medida) click to toggle source

Guarda un alimento dentro de la clase

# File lib/plato/fuente.rb, line 28
def ingrediente(grupo, nombre, medida)
  alimento = $alimentos.find{|x| x.nombre == nombre}
  aux = medida.split(" ").first.split("/")
  valor = 0
  if(aux.size > 1)
    valor = aux[0].to_f/aux[1].to_f
  else
    valor = aux[0].to_f
  end
  
  cantidad = $equivalencias[medida.sub("ñ", "n").split(" ").drop(1).each{|x| x.gsub!(/s\z/, "")}.reduce(:+).to_sym].to_f
  cantidad *= valor
 

  if(grupo == "vegetal" || grupo == "vegetales")
    @vegetales << [alimento, cantidad]
  elsif(grupo == "fruta" || grupo == "frutas")
    @frutas << [alimento, cantidad]
  elsif(grupo == "grano" || grupo == "granos" || grupo == "cereal" || grupo == "cereales")
    @granos << [alimento, cantidad]
  elsif(grupo == "proteina" || grupo == "proteína" || grupo == "proteinas" || grupo == "proteínas")
    @proteinas << [alimento, cantidad]
  elsif(grupo == "aceite" || grupo == "aceites")
    @aceites << [alimento, cantidad]
  else
    "#{grupo} no es un grupo de alimento permitido"
  end
end
to_s() click to toggle source

Muestra el contenido del plato

# File lib/plato/fuente.rb, line 58
def to_s
  total = 0
  output = @name
  output << "\n#{'=' * @name.size}\n\n"
  output << "Composición nutricional:\n"
  output << "%20s" % "" + "%-10s" % "glúcidos" + "%-10s" %  "proteínas" + "%-10s" % "lípidos" + "%-20s" % "valor energético\n"
  @vegetales.each{ |x, y| output << "%-20s" % x.nombre + "%-10s" % x.glucidos + "%-10s" % x.proteinas + "%-10s" % x.lipidos + "%-20f\n" % (x.val_energ/100*y); total += x.val_energ/100*y}
  @frutas.each{ |x, y| output << "%-20s" % x.nombre + "%-10s" % x.glucidos + "%-10s" % x.proteinas + "%-10s" % x.lipidos + "%-20f\n" % (x.val_energ/100*y); total += x.val_energ/100*y}
  @granos.each{ |x, y| output << "%-20s" % x.nombre + "%-10s" % x.glucidos + "%-10s" % x.proteinas + "%-10s" % x.lipidos + "%-20f\n" % (x.val_energ/100*y); total += x.val_energ/100*y}
  @proteinas.each{ |x, y| output << "%-20s" % x.nombre + "%-10s" % x.glucidos + "%-10s" % x.proteinas + "%-10s" % x.lipidos + "%-20f\n" % (x.val_energ/100*y); total += x.val_energ/100*y}
  @aceites.each{ |x, y| output << "%-20s" % x.nombre + "%-10s" % x.glucidos + "%-10s" % x.proteinas + "%-10s" % x.lipidos + "%-20f\n" % (x.val_energ/100*y); total += x.val_energ/100*y}
  output << "%-41s" % "Valor energético total" + "%20f" % total
  output
end