require 'etiqueta/etiqueta' class Menu attr_accessor :dia, :titl, :ingesta_min, :ingesta_max, :desayunos, :almuerzos, :cenas def initialize(dia, &block) @dia = dia @titl = '' @ingesta_min = 0 @ingesta_max = 0 @desayunos = [] @almuerzos = [] @cenas = [] if block_given? if block.arity == 1 yield self else instance_eval(&block) end end end def to_s output = @dia output << "\t\tTitulo: #@titl\n" output << "Ingesta min: #@ingesta_min - Ingesta max: #@ingesta_max\n" output << "==================================================================\n" output << "\t\t\tgrasas\tcarbohidratos\tproteínas\tfibra\tsal\tvalor energético" output << "Desayuno\n" desayunos.each do |x| output << "#{x.nombre}\t#{x.grasas}\t#{x.hidratos}\t\t#{x.proteinas}\t\t#{x.fibra_alimentaria}\t#{x.sal}\t#{x.valor_nutr_kj}\n" end output end def titulo(titl) @titl = titl end def ingesta(options = {}) @ingesta_min = options[:min] if options[:min] @ingesta_max = options[:max] if options[:max] end def desayuno(options = {}) @desayunos << desay end private def process(options = {}) alimento = Etiqueta.new( options[:descripcion], options[:gramos], Grasas.new(options[:grasas], options[:grasas] ), Hidratos.new(options[:carbohidratos], options[:carbohidratos] ), options[:proteinas], options[:sal], options[:fibra], nil, options[:porcion]) alimento end end @menu = Menu.new('Lunes') do titulo 'Bajo en calorías' ingesta :min => 30, :max => 35 desayuno :descripcion => 'Pan de trigo integral', :porcion => 1, :gramos => '100g', :grasas => '3.3g', :carbohidratos => '54g', :proteinas => '11g', :fibra => '2.3g', :sal => '0.06g' desayuno :descripcion => "Actimel", :porcion => 1, :gramos => '100g', :grasas => '3.4g', :carbohidratos => '4.4g', :proteinas => '3.6g', :fibra => '0g', :sal => '0.05g' end puts @menu.to_s