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