Plato = Struct.new(:descripcion, :racion, :gramos) class Menufinal attr_reader :title,:etiqueta def initialize(et, &bloque) @etiqueta = et @title = nil @rango_ingesta = [] @platos = [] @porcentaje = [] instance_eval &bloque if block_given? end def titulo(t) @title = t end def ingesta(ran = {}) if ran[:min] @rango_ingesta[0] = ran[:min] end if ran[:max] @rango_ingesta[1] = ran[:max] end end def plato (caracteristicas = {}) @platos << Plato.new(caracteristicas[:descripcion],caracteristicas[:racion],caracteristicas[:gramos]) end def porcentajes (tantos = {}) i = 0 @porcentaje[i] = tantos[:vct] i += 1 @porcentaje[i] = tantos[:proteinas] i += 1 @porcentaje[i] = tantos[:grasas] i += 1 @porcentajes[i] = tantos[:hidratos] end def mostrar_platos @platos.each do |i| puts " plato :descripcion => #{i[:descripcion]} :racion => #{i[:racion]} :gramos => #{i[:gramos]}" puts "\t" end end def mostrar_porcentajes puts "Porcentajes: " puts "Vct: #{@porcentaje[0]} || Proteinas: #{@porcentaje[1]}|| Grasas: #{@porcentaje[2]}|| Hidratos: #{@porcentaje[3]}." end def to_s puts "Menu: #{etiqueta}" puts "Título: #{title}" puts " \n ************************\n" puts " Ingesta: #{@rango_ingesta[0]} %-#{@rango_ingesta[1]}%" mostrar_platos mostrar_porcentajes end end