require "alimento/lista.rb" require "alimento/version.rb" class PlatoDls attr_accessor :nombre, :v_energetico, :vegetales, :frutas, :cereales, :proteinas, :aceites #@note Lista de alimentos para la costrucción de los platos @@lista = Lista.new() @HuevoFrito = AlimentoC.new("Huevo Frito", 14.1, 0.0, 19.5, "Huevos, lacteos y helados" ) @LecheVaca = AlimentoC.new("Leche vaca", 3.3, 4.8, 3.2, "Huevos, lacteos y helados") @Yogurt = AlimentoC.new("Yogurt", 3.8, 4.9, 3.8, "Huevos, lacteos y helados") @Cerdo = AlimentoC.new("Cerdo", 21.5, 0.0, 6.3, "Carnes y derivados") @Ternera = AlimentoC.new("Ternera", 21.1, 0.0, 3.1, "Carnes y derivados") @Pollo = AlimentoC.new("Pollo", 20.6, 0.0, 5.6, "Carnes y derivados") @Bacalao = AlimentoC.new("Bacalao", 17.7, 0.0, 0.4, "Pescados y mariscos") @Atun = AlimentoC.new("Atun", 21.5, 0.0, 15.5, "Pescados y mariscos") @Salmon = AlimentoC.new("Salmon", 19.9, 0.0, 13.6, "Pescados y mariscos") @AceiteOliva = AlimentoC.new("Aceite Oliva", 0.0, 0.2, 99.6, "Alimentos grasos") @Mantequilla = AlimentoC.new("Mantequilla", 0.7, 0.0, 83.2, "Alimentos grasos") @Chocolate = AlimentoC.new("Chocolate", 5.3, 47.0, 30.0, "Alimentos grasos") @Azucar = AlimentoC.new("Azucar", 0.0, 99.8, 0.0, "Alimentos ricos en carbohidratos") @Arroz = AlimentoC.new("Arroz",6.8, 77.7, 0.6, "Alimentos ricos en carbohidratos") @Lentejas = AlimentoC.new("Lentejas", 23.5, 52.0, 1.4, "Alimentos ricos en carbohidratos") @Papas = AlimentoC.new("Papas",2.0, 15.4, 0.1, "Alimentos ricos en carbohidratos") @Tomate = AlimentoC.new("Tomate", 1.0, 3.5, 0.2, "Verduras y Hortalizas") @Cebolla = AlimentoC.new("Cebolla", 1.3, 5.8, 0.3, "Verduras y Hortalizas") @Calabaza = AlimentoC.new("Calabaza", 1.1, 4.8, 0.1, "Verduras y Hortalizas") @Manzanas = AlimentoC.new("Manzanas", 0.3, 12.4, 0.4, "Frutas") @Platanos = AlimentoC.new("Platanos", 1.2, 21.4, 0.2, "Frutas") @Pera = AlimentoC.new("Pera", 0.5, 12.7, 0.3, "Frutas") @nodo1 = Nodo.new(@HuevoFrito) @nodo2 = Nodo.new(@LecheVaca) @nodo3 = Nodo.new(@Yogurt) @nodo4 = Nodo.new(@Cerdo) @nodo5 = Nodo.new(@Ternera) @nodo6 = Nodo.new(@Pollo) @nodo7 = Nodo.new(@Bacalao) @nodo8 = Nodo.new(@Atun) @nodo9 = Nodo.new(@Salmon) @nodo10 = Nodo.new(@AceiteOliva) @nodo11 = Nodo.new(@Mantequilla) @nodo12 = Nodo.new(@Chocolate) @nodo13 = Nodo.new(@Azucar) @nodo14 = Nodo.new(@Arroz) @nodo15 = Nodo.new(@Lentejas) @nodo16 = Nodo.new(@Papas) @nodo17 = Nodo.new(@Tomate) @nodo18 = Nodo.new(@Cebolla) @nodo19 = Nodo.new(@Calabaza) @nodo20 = Nodo.new(@Manzanas) @nodo21 = Nodo.new(@Platanos) @nodo22 = Nodo.new(@Pera) @@lista.insertar_cabeza(@nodo1) @@lista.insertar_mul([@nodo2, @nodo3, @nodo4, @nodo5, @nodo6, @nodo7, @nodo8, @nodo9, @nodo10, @nodo11,@nodo12, @nodo13, @nodo14, @nodo15, @nodo16, @nodo17, @nodo18, @nodo19, @nodo20, @nodo21, @nodo22], 1) #@note La equivalencia de las diferentes palabras en gramos @@equGram = { "cucharadas"=>1.8,"piezas pequeñas"=>7,"taza"=>6,"cucharón"=>4,"pieza"=>10,"cucharada"=>1.8, "piezas"=>10 } #@note Construcctor de la clase platos de DLS #@param Le pasamos el nombre y el bloque que irá inicializando el resto de las variables. def initialize nombreIn, &bloque @nombre = nombreIn @v_energetico = 0 @vegetales = [] @frutas = [] @cereales = [] @proteinas = [] @aceites = [] instance_eval(&bloque) end #@note Función para la cantidad de alimento que añadimos al plato #@param porcion[String] def get_cant porcion #La cantidad está en el primer caracter num = porcion.split[0].to_r cad = "" #Formateamos correctamente la cadena porcion.split[1..cad.length-1].each do |i| cad += i + " " end cant = num * @@equGram[cad.chomp ' '] end #@note Función para añadir correctamente los vegetales desde dls #@param nom_ali[Strign], opciones[String] def vegetal nom_ali, opciones = {} cant = 0 ali = @@lista.detect { |i| nom_ali == i.nombre } if opciones[:gramos] cant = options[:gramos] elsif opciones[:porcion] cant = get_cant opciones[:porcion] end @v_energetico += cant*ali.v_energetico @vegetales.push([ali, (cant*ali.v_energetico).round(3)]) end #@note Función para añadir correctamente las frutas desde dls #@param nom_ali[Strign], opciones[String] def fruta nom_ali, opciones = {} cant = 0 ali = @@lista.detect { |i| nom_ali == i.nombre } if opciones[:gramos] cant = opciones[:gramos] elsif opciones[:porcion] cant = get_cant opciones[:porcion] end @v_energetico += cant*ali.v_energetico @frutas.push([ali, (cant*ali.v_energetico).round(3)]) end #@note Función para añadir correctamente los cereales desde dls #@param nom_ali[Strign], opciones[String] def cereal nom_ali, opciones = {} cant = 0 ali = @@lista.detect { |i| nom_ali == i.nombre } if opciones[:gramos] cant = opciones[:gramos] elsif opciones[:porcion] cant = get_cant opciones[:porcion] end @v_energetico += cant*ali.v_energetico @cereales.push([ali, (cant*ali.v_energetico).round(3)]) end #@note Función para añadir correctamente los proteinas desde dls #@param nom_ali[Strign], opciones[String] def proteina nom_ali, opciones = {} cant = 0 ali = @@lista.detect { |i| nom_ali == i.nombre } if opciones[:gramos] cant = opciones[:gramos] elsif opciones[:porcion] cant = get_cant opciones[:porcion] end @v_energetico += cant*ali.v_energetico @proteinas.push([ali, (cant*ali.v_energetico).round(3)]) end #@note Función para añadir correctamente el aceite desde dls #@param nom_ali[Strign], opciones[String] def aceite nom_ali, opciones = {} cant = 0 ali = @@lista.detect { |i| nom_ali == i.nombre } if opciones[:gramos] cant = opciones[:gramos] elsif opciones[:porcion] cant = get_cant opciones[:porcion] end @v_energetico += cant*ali.v_energetico @aceites.push([ali, (cant*ali.v_energetico).round(3)]) end #@note Función para mostrar el contenido de la lista. #@return Lista formateada en una cadena para su visualización. def to_s salida = @nombre + "\n" salida += "=============================================================\n" salida += "Composición nutricional: \n" salida += "\tglúcidos proteínas lípidos \tgrupo\t\t\t valor energético\n" for i in 0..@vegetales.length-1 do salida += @vegetales[i][0].to_s + "\t\t" + @vegetales[i][1].to_s + "\n" end for i in 0..@frutas.length-1 do salida += @frutas[i][0].to_s + "\t\t" + @frutas[i][1].to_s + "\n" end for i in 0..@cereales.length-1 do salida += @cereales[i][0].to_s + "\t\t" + @cereales[i][1].to_s + "\n" end for i in 0..@proteinas.length-1 do salida += @proteinas[i][0].to_s + "\t\t" + @proteinas[i][1].to_s + "\n" end for i in 0..@aceites.length-1 do salida += @aceites[i][0].to_s + "\t\t" + @aceites[i][1].to_s + "\n" end salida += "Valor energetico = " + v_energetico.to_s salida end end