class Plato

require “alimento” @author Nicolangelo Famiglietti @note Clase Plato

Public Class Methods

new(names) { |self| ... } click to toggle source
# File lib/alimento/plato.rb, line 26
def initialize(names, &block)
    @names = names
    @ve = 0
    @fruta = []
    @vegetal = []
    @cereal = []
    @proteina = []
    @aceite = []
    # @porciones = []
    if block_given?  
      if block.arity == 1
        yield self
      else
       instance_eval(&block) 
      end
    end
end

Public Instance Methods

aceite(name, options = {}) click to toggle source
# File lib/alimento/plato.rb, line 206
def aceite(name, options = {})
    cantidad = 0
    numero = 0
    array = []
    i=0
    alimento = @@lista.detect { |x| name == x.nombre }
    
    if options[:gramos]
       cantidad = options[:gramos]
    elsif options[:porcion]
        values = options[:porcion].split(" ", 2)
        values.each do |value|
            array[i] = value
            i+=1
        end
        @@medidas.each do |key, value|
          if(key == array[1])
            cantidad = value
          end
        end
        numero = array[0].to_r.to_f
        cantidad = cantidad * numero
    end
    @ve += cantidad*alimento.get_ve
    @aceite.push([alimento, (cantidad*alimento.get_ve).round(2)])
end
cereal(name, options = {}) click to toggle source
# File lib/alimento/plato.rb, line 152
def cereal(name, options = {})
    cantidad = 0
    numero = 0
    array = []
    i=0
    alimento = @@lista.detect { |x| name == x.nombre }
    
    if options[:gramos]
       cantidad = options[:gramos]
    elsif options[:porcion]
        values = options[:porcion].split(" ", 2)
        values.each do |value|
            array[i] = value
            i+=1
        end
        @@medidas.each do |key, value|
          if(key == array[1])
            cantidad = value
          end
        end
        numero = array[0].to_r.to_f
        cantidad = cantidad * numero
    end
    @ve += cantidad*alimento.get_ve
    @cereal.push([alimento, (cantidad*alimento.get_ve).round(2)])
    
end
fruta(name, options = {}) click to toggle source
# File lib/alimento/plato.rb, line 125
def fruta(name, options = {})
    cantidad = 0
    numero = 0
    array = []
    i=0
    alimento = @@lista.detect { |x| name == x.nombre }
    
    if options[:gramos]
       cantidad = options[:gramos]
    elsif options[:porcion]
        values = options[:porcion].split(" ", 2)
        values.each do |value|
            array[i] = value
            i+=1
        end
        @@medidas.each do |key, value|
          if(key == array[1])
            cantidad = value
          end
        end
        numero = array[0].to_r.to_f
        cantidad = cantidad * numero
    end
    @ve += cantidad*alimento.get_ve
    @fruta.push([alimento, (cantidad*alimento.get_ve).round(2)])
    
end
proteina(name, options = {}) click to toggle source
# File lib/alimento/plato.rb, line 180
def proteina(name, options = {})
    cantidad = 0
    numero = 0
    array = []
    i=0
    alimento = @@lista.detect { |x| name == x.nombre }
    
    if options[:gramos]
       cantidad = options[:gramos]
    elsif options[:porcion]
        values = options[:porcion].split(" ", 2)
        values.each do |value|
            array[i] = value
            i+=1
        end
        @@medidas.each do |key, value|
          if(key == array[1])
            cantidad = value
          end
        end
        numero = array[0].to_r.to_f
        cantidad = cantidad * numero
    end
    @ve += cantidad*alimento.get_ve
    @proteina.push([alimento, (cantidad*alimento.get_ve).round(2)])
end
to_s() click to toggle source
# File lib/alimento/plato.rb, line 44
def to_s
    s = @names
    s << "\n#{'=' * @names.size}\n"
    s << "Composición nutricional:\n"
    s << "\t\tglúcidos proteínas lípidos valor energético\n"
    
    for i in 0..@vegetal.size-1 do
        s << @vegetal[i][0].nombre + ":"
        s << "\t\t%s" % @vegetal[i][0].glucidos
        s << "\t %s" % @vegetal[i][0].proteinas
        s << "\t   %s" % @vegetal[i][0].grasas
        s << "\t   %s\n" % @vegetal[i][1]
    end
    for i in 0..@fruta.size-1 do
        s << @fruta[i][0].nombre + ":"
        s << "\t%s" % @fruta[i][0].glucidos
        s << "\t %s" % @fruta[i][0].proteinas
        s << "\t   %s" % @fruta[i][0].grasas
        s << "\t   %s\n" % @fruta[i][1]
    end
    for i in 0..@cereal.size-1 do
        s << @cereal[i][0].nombre + ":"
        s << "\t\t%s" % @cereal[i][0].glucidos
        s << "\t %s" % @cereal[i][0].proteinas
        s << "\t   %s" % @cereal[i][0].grasas
        s << "\t   %s\n" % @cereal[i][1]
    end
    for i in 0..@proteina.size-1 do
        s << @proteina[i][0].nombre + ":    "
        s << "\t%s" % @proteina[i][0].glucidos
        s << "\t %s" % @proteina[i][0].proteinas
        s << "\t   %s" % @proteina[i][0].grasas
        s << "\t   %s\n" % @proteina[i][1]
    end
    for i in 0..@aceite.size-1 do
        s << @aceite[i][0].nombre + ":"
        s << "%s" % @aceite[i][0].glucidos
        s << "\t %s" % @aceite[i][0].proteinas
        s << "\t   %s" % @aceite[i][0].grasas
        s << "\t   %s\n" % @aceite[i][1]
    end
    s << "Valor energético total"
    s << "\t%f" % @ve
    s
end
vegetal(name, options = {}) click to toggle source
# File lib/alimento/plato.rb, line 90
def vegetal(name, options = {})
    cantidad = 0
    numero = 0
    array = []
    i=0
    alimento = @@lista.detect { |x| name == x.nombre }
    
    if options[:gramos]
       cantidad = options[:gramos]
    elsif options[:porcion]
        #la cadena de porcion la separo en 2
        values = options[:porcion].split(" ", 2)
        #cada parte la guardo en un array
        #2 cucharadas
        #array[0] = 2
        #array[1] = cucharadas
        values.each do |value|
            array[i] = value
            i+=1
        end
        #busco array[1] en el hash de medidas
        @@medidas.each do |key, value|
          if(key == array[1])
            cantidad = value
          end
        end
        #numero es array[0] pasado primero a racional luego a float
        numero = array[0].to_r.to_f
        cantidad = cantidad * numero
    end
    @ve += cantidad*alimento.get_ve
    @vegetal.push([alimento, (cantidad*alimento.get_ve).round(2)])
    
end