class Plato

Attributes

name[R]
total[R]

Public Class Methods

new(name) { |self| ... } click to toggle source
# File lib/P11/plato.rb, line 3
def initialize(name, &block)
    @name = name
    @alimentos = []
    @total = 0
    
    if block_given?  
      if block.arity == 1
        yield self
      else
       instance_eval(&block) 
      end
    end
end

Public Instance Methods

aceite(name, amount) click to toggle source
# File lib/P11/plato.rb, line 88
def aceite(name, amount)
    insert_food(name, amount)
end
cereal(name, amount) click to toggle source
# File lib/P11/plato.rb, line 80
def cereal(name, amount)
    insert_food(name, amount)
end
convert_quantities(amount) click to toggle source
# File lib/P11/plato.rb, line 17
def convert_quantities(amount)
  grams = 0
  prop = 1
  
    if amount[:porcion] =~ /taza/i
       amount[:porcion] = amount[:porcion].gsub(/taz(a\s|as\s|a\z|as\z)/, '')
        grams = 3
        else if amount[:porcion] =~ /cucharada/i
                amount[:porcion] = amount[:porcion].gsub(/cucharad(a\s|as\s|a\z|as\z)/, '')
                grams = 0.09
    
            else if amount[:porcion] =~ /cucharon/i
                    amount[:porcion] = amount[:porcion].gsub(/cucharo(n\s|nes\s|n\z|nes\z)/, '')
                    grams = 10
        
                else if amount[:porcion] =~ /pieza/i
                        amount[:porcion] = amount[:porcion].gsub(/piez(a\s|as\s|a\z|as\z)/, '')
                        grams = 1
                end
            end
        end
    end
    
    if amount[:porcion] =~ /pequeñ(a\s|as\s|a\z|as\z|o\s|os\s|o\z|os\z)/i 
       amount[:porcion] = amount[:porcion].gsub(/pequeñ(a\s|as\s|a\z|as\z|o\s|os\s|o\z|os\z)/, '')
       grams = grams.to_f / 2
    end
    # reconoce numero y fraccion amount[:porcion] = amount[:porcion].match(/(\d\/\d)|\d/)
    
    # Si el número es una fracción
    if amount[:porcion].match(/(\d\/\d)/)
        num = amount[:porcion].match(/(\d\/)/).to_s.gsub(/(\/)/, '').to_f
        den = amount[:porcion].match(/(\/\d)/).to_s.gsub(/(\/)/, '').to_f
        prop = num/den
    else
        # Si el numero es entero
        prop = amount[:porcion].match(/\d/).to_s.to_i
    end
    
    grams = grams * prop
end
fruta(name, amount) click to toggle source
# File lib/P11/plato.rb, line 76
def fruta(name, amount)
    insert_food(name, amount)
end
insert_food(name, amount) click to toggle source
# File lib/P11/plato.rb, line 59
def insert_food(name, amount)
    food = Food[name]

    if amount[:porcion]
        quantity = Food[name].cal_index * convert_quantities(amount)
    else
        quantity = Food[name].cal_index * amount[:gramos]/10
    end

    @alimentos << [food, quantity.round(2)]  
    @total = @alimentos.map{|x| x[1]}.reduce(:+)
end
proteina(name, amount) click to toggle source
# File lib/P11/plato.rb, line 84
def proteina(name, amount)
    insert_food(name, amount)
end
to_s() click to toggle source
# File lib/P11/plato.rb, line 92
def to_s
    puts @name
    
    i = 0
    while(i < @name.size)
        print "="
        i = i + 1
    end
    puts
    puts "Composición nutricional:"
    puts "                 Glúcidos Proteínas Lípidos Valor energético Valor porcion"
    
    @alimentos.map{|x| print x[0], "%8s" % x[1], "\n"}
    print "Valor energético total: ", "%44s" % @total
     
end
vegetal(name, amount) click to toggle source
# File lib/P11/plato.rb, line 72
def vegetal(name, amount)
    insert_food(name, amount)
end