Class: Plato_dsl

Inherits:
Plato show all
Includes:
Comparable
Defined in:
lib/p6/plato_dsl.rb

Overview

Clase plato para que funcione con DSL

Instance Attribute Summary

Attributes inherited from Plato

#emision_, #terreno_

Attributes inherited from Plato_i

#alimentos_, #nombre_, #peso_

Instance Method Summary collapse

Methods inherited from Plato

#<=>, #emision_total, #energia, #huella_carbono, #huella_nutricional, #impacto, #initalize, #terreno_total

Methods inherited from Plato_i

#<=>, #porc_carbo, #porc_lipidos, #porc_proteinas, #vct

Constructor Details

#initialize(string, &block) ⇒ Plato_dsl

Constructor de la clase Plato_dsl



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/p6/plato_dsl.rb', line 6

def initialize(string, &block)
	# Nombre del plato
	@nombre_ = string
	@alimentos_ = List.new
	@peso_ = List.new

	if block_given?
		if block.arity == 1
			yield self
		else 
			instance_eval(&block)
		end
	end
end

Instance Method Details

#alimento(options = {}) ⇒ Object



21
22
23
24
25
# File 'lib/p6/plato_dsl.rb', line 21

def alimento(options={})
	aux = Alimento.new(options[:descripcion],options[:proteinas],options[:hidratos],options[:lipidos],options[:emision],options[:terreno])
	@alimentos_.insert(aux)
	@peso_.insert(options[:peso])
end

#hidratosObject



31
32
33
# File 'lib/p6/plato_dsl.rb', line 31

def hidratos
	@alimentos_.collect{|alimento| alimento.carbo_}.reduce(:+)
end

#lipidosObject



35
36
37
# File 'lib/p6/plato_dsl.rb', line 35

def lipidos
	@alimentos_.collect{|alimento| alimento.lipidos_}.reduce(:+)
end

#proteinasObject



27
28
29
# File 'lib/p6/plato_dsl.rb', line 27

def proteinas
	@alimentos_.collect{|alimento| alimento.proteinas_}.reduce(:+)
end

#to_sObject



39
40
41
42
# File 'lib/p6/plato_dsl.rb', line 39

def to_s
	output = "Nombre: #{@nombre_} | C02: #{emision_total} | Terreno: #{terreno_total} | Kcal: #{vct.round(2)}\n"
	return output
end