class Plato
Representación de un plato, es decir de un conjunto de alimentos definido en lenguaje natural
@author Eugenio José Gonzalez Luis @since 1.0.0 @attr_reader String nombre Nombre del plato @attr_reader Array ingredientes Conjunto de Alimentos de un plato @attr_reader Array porciones Cantidad de cada alimento de un plato @attr_reader Array tabla todos los alimentos posibles
Attributes
Public Class Methods
Constructor de Plato
@param [String] Nombre nombre del Plato
@param [Block] bloque Codigo que dicta los ingredientes del plato
@return [Plato] Devuelve el objeto creado de clase Plato
# File lib/alimento/Plato.rb, line 17 def initialize(nombre, &bloque) @nombre = nombre @tabla = [ AlimentoCategorizable.new("Huevo frito","Huevos y Lacteos", 14.1, 0.0, 19.5), AlimentoCategorizable.new("Leche vaca","Huevos y Lacteos" , 3.3, 4.8, 3.2), AlimentoCategorizable.new("Yogurt","Huevos y Lacteos", 3.8, 4.9, 3.8), AlimentoCategorizable.new("Cerdo","Carnes y Derivados", 21.5, 0.0, 6.3), AlimentoCategorizable.new("Ternera","Carnes y Derivados", 21.1, 0.0, 3.1), AlimentoCategorizable.new("Pollo","Carnes y Derivados", 20.6, 0.0, 5.6), AlimentoCategorizable.new("Bacalao","Pescados y Mariscos", 17.7, 0.0, 0.4), AlimentoCategorizable.new("Atun","Pescados y Mariscos", 21.5, 0.0, 15.5), AlimentoCategorizable.new("Salmon","Pescados y Mariscos", 19.9, 0.0, 13.6), AlimentoCategorizable.new("Aceite de oliva","Alimentos Grasos", 0.0, 0.2, 99.6), AlimentoCategorizable.new("Mantequilla","Alimentos Grasos", 0.7, 0.0, 83.2), AlimentoCategorizable.new("Chocolate","Alimentos Grasos", 5.3, 47.0, 30.0), AlimentoCategorizable.new("Azucar","Alimentos Ricos en Carbohidratos", 0.0, 99.8, 0.0), AlimentoCategorizable.new("Arroz","Alimentos Ricos en Carbohidratos", 6.8, 77.7, 0.6), AlimentoCategorizable.new("Lentejas","Alimentos Ricos en Carbohidratos", 23.5, 52.0, 1.4), AlimentoCategorizable.new("Papas","Alimentos Ricos en Carbohidratos", 2.0, 15.4, 0.1), AlimentoCategorizable.new("Tomate","Verduras y Hortalizas", 1.0, 3.5, 0.2), AlimentoCategorizable.new("Cebolla","Verduras y Hortalizas", 1.3, 5.8, 0.3), AlimentoCategorizable.new("Calabaza","Verduras y Hortalizas", 1.1, 4.8, 0.1), AlimentoCategorizable.new("Manzana","Frutas", 0.3, 12.4, 0.4), AlimentoCategorizable.new("Platanos","Frutas", 1.2, 21.4, 0.2), AlimentoCategorizable.new("Pera","Frutas", 0.5 ,12.7, 0.3)] @porciones = [] @ingredientes = [] if block_given? if bloque.arity == 1 yield self else instance_eval(&bloque) end end end
Public Instance Methods
Añade una aceite al plato @param [String] nombre nombre de la fruta @param options cantidad de un alimento
# File lib/alimento/Plato.rb, line 141 def aceite(nombre, options = {}) tabla.each_with_index do |s , i| if (s.nombre == nombre) @ingredientes << tabla[i] break end end if (options[:gramos]) @porciones << options[:gramos] else if (options[:porciones]) dummyString = options[:porciones] @porciones << dummyString.scan(/\d+\.\d+/).first.to_f end end end
Añade una fruta al plato @param [String] nombre nombre de la fruta @param options cantidad de un alimento
# File lib/alimento/Plato.rb, line 69 def fruta(nombre, options = {}) tabla.each_with_index do |s , i| if (s.nombre == nombre) @ingredientes << tabla[i] break end end if (options[:gramos]) @porciones << options[:gramos] else if (options[:porciones]) dummyString = options[:porciones] @porciones << dummyString.scan(/\d+\.\d+/).first.to_f end end end
Añade un grano al plato al plato @param [String] nombre nombre de la fruta @param options cantidad de un alimento
# File lib/alimento/Plato.rb, line 123 def granos_integrales(nombre, options = {}) tabla.each_with_index do |s , i| if (s.nombre == nombre) @ingredientes << tabla[i] break end end if (options[:gramos]) @porciones << options[:gramos] else if (options[:porciones]) dummyString = " (#{options[:porciones]})" @porciones << dummyString.scan(/\d+\.\d+/).first.to_f end end end
Añade una proteina al plato @param [String] nombre nombre de la fruta @param options cantidad de un alimento
# File lib/alimento/Plato.rb, line 105 def proteinas(nombre, options = {}) tabla.each_with_index do |s , i| if (s.nombre == nombre) @ingredientes << tabla[i] break end end if (options[:gramos]) @porciones << options[:gramos] else if (options[:porciones]) dummyString = options[:porciones] @porciones << dummyString.scan(/\d+\.\d+/).first.to_f end end end
Convierte el objeto en un String @return [String] descripción del plato en una cadena de caracteres
# File lib/alimento/Plato.rb, line 54 def to_s texto = @nombre texto << "\n#{'=' * @nombre.size}\n" texto << "Composicion nutricional: \n" @ingredientes.each_with_index do |i , p| texto << i.to_s texto << "#{i.kcal * @porciones[p]}" texto << "\n" end return texto end
Añade un vegetal al plato @param [String] nombre nombre de la fruta @param options cantidad de un alimento
# File lib/alimento/Plato.rb, line 87 def vegetal(nombre, options = {}) tabla.each_with_index do |s , i| if (s.nombre == nombre) @ingredientes << tabla[i] break end end if (options[:gramos]) @porciones << options[:gramos] else if (options[:porciones]) dummyString = options[:porciones] @porciones << dummyString.scan(/\d+\.\d+/).first.to_f end end end