Sha256: deb5cc93577ef726674e966b9afe39c91251db0ee16818145221b887e2facacd
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
require 'gema' class Menu < ListaDobleEnlazada attr_accessor :precio attr_reader :nombre, :descripcion def initialize(nombre, &block) @nombre = nombre @descripcion = "" @precio = 0.0 super() if block_given? if block.arity == 1 yield self else instance_eval(&block) end end end #Función de llamada para DSL #Formato: # { # :descripcion => <"Descripcion del plato">, # :precio => <"Precio total del plato"> # :alimento => [ # { :descripcion => <"Nombre alimento">, :proteinas => X, :carbohidratos => Y, :lipidos => Z, :gei => A, :terreno => B, :gramos => C} # { :descripcion => <"Nombre alimento">, :proteinas => X, :carbohidratos => Y, :lipidos => Z, :gei => A, :terreno => B, :gramos => C } # . # . # . # ] # } def componente( options = {} ) descripcion = options[:descripcion] plato = Plato.new( descripcion ) plato.precio = options[:precio] ? options[:precio] : 0 options[:alimento].each{ |alimento| plato.alimento(alimento) } if options[:alimento] self.insert(plato) end def descripcion(desc) @descripcion = desc end def precio(precio) @precio = precio end def to_s result = "Menu '#{nombre} -> " self.each{|plato| result += "#{plato}(#{plato.precio} €)\n, " } result = result[0...-2] result += ". Precio total = #{@precio} €" return result end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
prct06-TDD-0.1.0 | lib/Menu.rb |