Class: Dsl::Platodsl
- Inherits:
-
Object
- Object
- Dsl::Platodsl
- Includes:
- Comparable, List
- Defined in:
- lib/alimentos/dsl.rb
Constant Summary
Constants included from List
Instance Attribute Summary collapse
-
#alimentos ⇒ Object
Returns the value of attribute alimentos.
-
#cantidades ⇒ Object
Returns the value of attribute cantidades.
-
#kcal ⇒ Object
Returns the value of attribute kcal.
-
#nombre ⇒ Object
Returns the value of attribute nombre.
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
Permite comparar entre distintos platos según las kcal.
- #alimento(aliment, options = {}) ⇒ Object
-
#calculoCalorico ⇒ Object
Realiza el calculo de las calorias totales del plato.
- #emisiones ⇒ Object
- #huella ⇒ Object
-
#initialize(nombre, &block) ⇒ Platodsl
constructor
A new instance of Platodsl.
-
#m2 ⇒ Object
Calcula los metros cuadrados que gasta cada plato.
-
#porcarbohidratos ⇒ Object
Realiza el calculo del porcentaje de carbohidratos que tiene.
-
#porlipidos ⇒ Object
Realiza el calculo del porcentaje de lipidos que tiene.
-
#porproteinas ⇒ Object
Realiza el calculo del porcentaje de proteinas que tiene.
-
#to_s ⇒ Object
Serializa el plato.
Constructor Details
#initialize(nombre, &block) ⇒ Platodsl
Returns a new instance of Platodsl.
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/alimentos/dsl.rb', line 9 def initialize(nombre,&block) @nombre = nombre @alimentos = List.new() @cantidades = List.new() if block_given? if block.arity == 1 yield self else instance_eval(&block) end end end |
Instance Attribute Details
#alimentos ⇒ Object
Returns the value of attribute alimentos.
5 6 7 |
# File 'lib/alimentos/dsl.rb', line 5 def alimentos @alimentos end |
#cantidades ⇒ Object
Returns the value of attribute cantidades.
5 6 7 |
# File 'lib/alimentos/dsl.rb', line 5 def cantidades @cantidades end |
#kcal ⇒ Object
Returns the value of attribute kcal.
5 6 7 |
# File 'lib/alimentos/dsl.rb', line 5 def kcal @kcal end |
#nombre ⇒ Object
Returns the value of attribute nombre.
5 6 7 |
# File 'lib/alimentos/dsl.rb', line 5 def nombre @nombre end |
Instance Method Details
#<=>(other) ⇒ Object
Permite comparar entre distintos platos según las kcal
119 120 121 |
# File 'lib/alimentos/dsl.rb', line 119 def <=>(other) @kcal<=>other.kcal end |
#alimento(aliment, options = {}) ⇒ Object
22 23 24 25 26 |
# File 'lib/alimentos/dsl.rb', line 22 def alimento(aliment, ={}) @alimentos.push(aliment) @cantidades.push([:cantidad]) if [:cantidad] @kcal=calculoCalorico() end |
#calculoCalorico ⇒ Object
Realiza el calculo de las calorias totales del plato
30 31 32 33 34 35 36 37 |
# File 'lib/alimentos/dsl.rb', line 30 def calculoCalorico() calorias = @alimentos.collect { |x| x.calorias()} cantidades = @cantidades.collect{ |x| x} for i in 0...cantidades.size() do calorias[i]=calorias[i]*0.01*cantidades[i] end calorias.sum end |
#emisiones ⇒ Object
58 59 60 61 62 63 64 65 |
# File 'lib/alimentos/dsl.rb', line 58 def emisiones() emisiones= @alimentos.collect{ |x| x.emisiones } cantidades = @cantidades.collect{|x| x} for i in 0...emisiones.size() do emisiones[i]=emisiones[i]*cantidades[i]*0.01 end (emisiones.sum).round(2) end |
#huella ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/alimentos/dsl.rb', line 86 def huella() ienergia=0 icarbono=0 if @kcal<670 ienergia+=1 elsif @kcal > 830 ienergia+=3 else ienergia+=2 end if emisiones()<800 icarbono+=1 elsif emisiones()>1200 icarbono+=3 else icarbono+=2 end huellapropia= (ienergia+icarbono)/2 huellapropia end |
#m2 ⇒ Object
Calcula los metros cuadrados que gasta cada plato
68 69 70 71 72 73 74 75 |
# File 'lib/alimentos/dsl.rb', line 68 def m2() m2= @alimentos.collect{ |x| x.m2} cantidades = @cantidades.collect{|x| x} for i in 0...m2.size() do m2[i]=m2[i]*cantidades[i]*0.01 end (m2.sum).round(2) end |
#porcarbohidratos ⇒ Object
Realiza el calculo del porcentaje de carbohidratos que tiene
78 79 80 81 82 83 84 85 |
# File 'lib/alimentos/dsl.rb', line 78 def porcarbohidratos() carbohidratos = @alimentos.collect{ |x| x.carbohidratos } cantidades = @cantidades.collect{|x| x} for i in 0...carbohidratos.size() do carbohidratos[i]=carbohidratos[i]*cantidades[i]*0.01 end ((carbohidratos.sum*4/@kcal)*100).round(2) end |
#porlipidos ⇒ Object
Realiza el calculo del porcentaje de lipidos que tiene
50 51 52 53 54 55 56 57 |
# File 'lib/alimentos/dsl.rb', line 50 def porlipidos() lipidos = @alimentos.collect { |x| x.lipidos} cantidades = @cantidades.collect{|x| x} for i in 0...lipidos.size() do lipidos[i]=lipidos[i]*cantidades[i]*0.01 end ((lipidos.sum*9/@kcal)*100).round(2) end |
#porproteinas ⇒ Object
Realiza el calculo del porcentaje de proteinas que tiene
40 41 42 43 44 45 46 47 |
# File 'lib/alimentos/dsl.rb', line 40 def porproteinas() proteinas = @alimentos.collect { |x| x.proteinas} cantidades = @cantidades.collect{|x| x} for i in 0...proteinas.size() do proteinas[i] = proteinas[i]*cantidades[i]*0.01 end ((proteinas.sum*4/@kcal)*100).round(2) end |
#to_s ⇒ Object
Serializa el plato
108 109 110 111 112 113 114 115 116 |
# File 'lib/alimentos/dsl.rb', line 108 def to_s() output = "#{@nombre}:\n" @alimentos.zip(@cantidades).each do |aliment,cantidad| output<<"\t\t#{aliment}: #{cantidad}g\n" end output << "\t\tValor energético: #{@kcal}kcal\n" output << "\t\tHuella: #{huella()}" output end |