include Comparable # Clase que implementa un menú dietético. # @author alu0100895179 # @attr_reader [char] titulo Título para el menú (ej. desayuno, almuerzo, etc.) # @attr_reader [array] porcentaje Array con el rango de porcentajes de ingesta diaria # @attr_reader [array] platos Array con los diferentes platos del menú con los elementos descripción, porciones e ingesta # @attr_reader [char] vct Cadena que almacena el valor calórico total # @attr_reader [array] porcentaje_pgh Array con los valores para los porcentajes de proteínas, grasas e hidratos respectivamente class Menu attr_reader :titulo, :porcentaje, :platos, :vct, :porcentaje_pgh # Método que inicializa el menú almacenando los datos necesatios. # @param [char] titulo Título para el menú (ej. desayuno, almuerzo, etc.) # @param [array] porcentaje Array con el rango de porcentajes de ingesta diaria # @param [array] platos Array con los diferentes platos del menú con los elementos descripción, porciones e ingesta # @param [char] vct Cadena que almacena el valor calórico total # @param [array] porcentaje_pgh Array con los valores para los porcentajes de proteínas, grasas e hidratos respectivamente def initialize(titulo ="", porcentaje = [], platos =[], vct ="", porcentaje_pgh=[], &block) @titulo, @porcentaje, @platos, @vct, @porcentaje_pgh= titulo, porcentaje, platos, vct, porcentaje_pgh if(block_given?) instance_eval(&block) end end # Método para obtener el titulo. # @return [char] Retorna el título para del menú (ej. desayuno, almuerzo, etc.) def get_titulo() @titulo end # Método para obtener un elemento de un plato. # @param [int] i Coordenada que nos permitirá saber de qué plato se quiere extraer información # @param [int] j Coordenada que nos permitirá saber que información se quiere extraer del plato especificado # @return [array_possition] Retorna un valor determinado de un plato en específico def get_platos(i,j) @platos[i][j] end # Método para obtener el porcentaje de ingesta. # @return [array] Retorna el rango de porcentajes def get_ingesta() @porcentaje end # Método para obtener el valor calórico total. # @return [char] Retorna el valor calórico total def get_vct() @vct end # Método para obtener el array de porcentajes de proteínas grasas e hidratos. # @return [array] Retorna el array de porcentajes de proteínas grasas e hidratos def get_pgh() @porcentaje_pgh end # Método para mostrar en el formato especificado. # @return [char] Retorna una cadena de caracteres con el texto para mostrar el menú formateado correctamente def to_s() x = "" x << "#{@titulo}" if porcentaje.size == 2 x << " (#{@porcentaje[0]} - #{@porcentaje[1]}%)\n" else x << " (#{@porcentaje[0]}%)\n" end i=0 while (i(nuevo) @vct<=>nuevo.vct end ########################################################################################################################### def titulo_(title) @titulo=title end def ingesta(options = {}) @porcentaje << options[:min] @porcentaje << options[:max] if options[:max] end def plato(plato={}) plato2 = [] plato2 << plato[:descripcion] plato2 << plato[:porcion] plato2 << plato[:gramos] @platos << plato2 end def porcentajes(porcentajes = {}) @vct = porcentajes[:vct] @porcentaje_pgh << porcentajes[:proteinas] @porcentaje_pgh << porcentajes[:grasas] @porcentaje_pgh << porcentajes[:hidratos] end end