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