alimento_alu0101050218 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +95 -0
- data/Guardfile +82 -0
- data/LICENSE.txt +21 -0
- data/README.md +11 -0
- data/Rakefile +6 -0
- data/alimento.gemspec +38 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/docs/Alimento.html +158 -0
- data/docs/Alimento/Alimento.html +1999 -0
- data/docs/Alimento/Error.html +124 -0
- data/docs/Alimento/List.html +963 -0
- data/docs/Alimento/Node.html +415 -0
- data/docs/Alimento/Plato.html +1132 -0
- data/docs/Alimento/PlatoAmbiental.html +1165 -0
- data/docs/Array.html +391 -0
- data/docs/_index.html +186 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +496 -0
- data/docs/file.README.html +80 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +80 -0
- data/docs/js/app.js +303 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +459 -0
- data/docs/top-level-namespace.html +112 -0
- data/lib/alimento.rb +14 -0
- data/lib/alimento/Array.rb +31 -0
- data/lib/alimento/alimento.rb +135 -0
- data/lib/alimento/list.rb +87 -0
- data/lib/alimento/menuDSL.rb +59 -0
- data/lib/alimento/plato.rb +93 -0
- data/lib/alimento/platoDSL.rb +56 -0
- data/lib/alimento/platoambiental.rb +100 -0
- data/lib/alimento/version.rb +3 -0
- metadata +186 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>
|
7
|
+
Top Level Namespace
|
8
|
+
|
9
|
+
— Documentation by YARD 0.9.20
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
pathId = "";
|
19
|
+
relpath = '';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
|
23
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
24
|
+
|
25
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
26
|
+
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<div class="nav_wrap">
|
31
|
+
<iframe id="nav" src="class_list.html?1"></iframe>
|
32
|
+
<div id="resizer"></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="main" tabindex="-1">
|
36
|
+
<div id="header">
|
37
|
+
<div id="menu">
|
38
|
+
|
39
|
+
<a href="_index.html">Index</a> »
|
40
|
+
|
41
|
+
|
42
|
+
<span class="title">Top Level Namespace</span>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div id="search">
|
47
|
+
|
48
|
+
<a class="full_list_link" id="class_list_link"
|
49
|
+
href="class_list.html">
|
50
|
+
|
51
|
+
<svg width="24" height="24">
|
52
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
53
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
54
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
55
|
+
</svg>
|
56
|
+
</a>
|
57
|
+
|
58
|
+
</div>
|
59
|
+
<div class="clear"></div>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<div id="content"><h1>Top Level Namespace
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
</h1>
|
67
|
+
<div class="box_info">
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
</div>
|
80
|
+
|
81
|
+
<h2>Defined Under Namespace</h2>
|
82
|
+
<p class="children">
|
83
|
+
|
84
|
+
|
85
|
+
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Alimento.html" title="Alimento (module)">Alimento</a></span>
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>
|
90
|
+
|
91
|
+
|
92
|
+
</p>
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
</div>
|
103
|
+
|
104
|
+
<div id="footer">
|
105
|
+
Generated on Tue Dec 17 22:28:19 2019 by
|
106
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
107
|
+
0.9.20 (ruby-2.5.1).
|
108
|
+
</div>
|
109
|
+
|
110
|
+
</div>
|
111
|
+
</body>
|
112
|
+
</html>
|
data/lib/alimento.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "alimento/version"
|
2
|
+
require "alimento/alimento"
|
3
|
+
require "alimento/list"
|
4
|
+
require "alimento/plato"
|
5
|
+
require "alimento/platoambiental"
|
6
|
+
require "alimento/Array"
|
7
|
+
require "alimento/menuDSL"
|
8
|
+
require "alimento/platoDSL"
|
9
|
+
|
10
|
+
|
11
|
+
module Alimento
|
12
|
+
class Error < StandardError; end
|
13
|
+
# Your code goes here...
|
14
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# @author Hernan Daniel Gonzalez Guanipa
|
2
|
+
class Array
|
3
|
+
|
4
|
+
|
5
|
+
# @note Calculo del elemento maximo del array
|
6
|
+
# @return [Object] Objeto del mayor dato entre los comparados
|
7
|
+
def Max
|
8
|
+
self.max{|a, b| a.huella_nutricional <=> b.huella_nutricional}
|
9
|
+
end
|
10
|
+
|
11
|
+
# @note Aumento de los precios segun el indice
|
12
|
+
# @param precios Array con valores flotantes
|
13
|
+
# @return [Array] Vector con los valores aumentados
|
14
|
+
def high_prices(precios)
|
15
|
+
huella_maxima = self.Max.huella_nutricional
|
16
|
+
i = 0
|
17
|
+
nuevos_precios = []
|
18
|
+
self.each { |iter|
|
19
|
+
if huella_maxima = 1
|
20
|
+
nuevos_precios.push((precios[i] * 1.10).round(2))
|
21
|
+
elsif huella_maxima = 2
|
22
|
+
nuevos_precios.push((precios[i] * 1.25).round(2))
|
23
|
+
else
|
24
|
+
nuevos_precios.push((precios[i] * 1.50).round(2))
|
25
|
+
end
|
26
|
+
i += 1
|
27
|
+
}
|
28
|
+
return nuevos_precios
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
# @author Hernan Daniel Gonzalez Guanipa
|
2
|
+
|
3
|
+
module Alimento
|
4
|
+
|
5
|
+
class Alimento
|
6
|
+
|
7
|
+
include Comparable
|
8
|
+
|
9
|
+
attr_reader :nombre, :proteinas, :carbohidratos, :lipidos, :gei, :terreno
|
10
|
+
|
11
|
+
# @note Constructor de la clase
|
12
|
+
# @param nombre Identificador del alimento
|
13
|
+
# @param proteinas Cantidad de proteinas en gramos
|
14
|
+
# @param carbohidratos Cantida de carbohidratos en gramos
|
15
|
+
# @param lipidos Cantidad e lipidos en gramos
|
16
|
+
# @param gei Cantidad de emisiones de gases
|
17
|
+
# @param terreno Terreno ocupado por la frabricacaion de cada alimento
|
18
|
+
def initialize (nombre, proteinas, carbohidratos, lipidos, gei, terreno)
|
19
|
+
@nombre, @proteinas, @carbohidratos, @lipidos, @gei, @terreno = nombre, proteinas, carbohidratos, lipidos, gei, terreno
|
20
|
+
end
|
21
|
+
|
22
|
+
# @note Comparador de alimentos
|
23
|
+
# @param other Alimento con el que comparar
|
24
|
+
# @return [Alimento] Objeto que sea mayor
|
25
|
+
def <=>(other)
|
26
|
+
valor_energetico(valor_glucidos(carbohidratos), valor_proteinas(proteinas), valor_lipidos(lipidos)) <=> other.valor_energetico(other.valor_glucidos(other.carbohidratos), other.valor_proteinas(other.proteinas), other.valor_lipidos(other.lipidos))
|
27
|
+
end
|
28
|
+
|
29
|
+
# @note Conversion de los carbohidratos a kcal
|
30
|
+
# @param carbohidrato Cantidad de carbohidratos en gramos
|
31
|
+
# @return [Float] El cambio a kcal
|
32
|
+
def valor_glucidos (carbohidrato)
|
33
|
+
return (carbohidrato*4).round(1)
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
# @note Conversion de las proteinnas en kcal
|
38
|
+
# @param proteinas Cantidad de proteinas en gramos
|
39
|
+
# @return [Float] El cambio a kcal
|
40
|
+
def valor_proteinas (proteinas)
|
41
|
+
return (proteinas*4).round(1)
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
# @note Conversion de los lipidos en kcal
|
46
|
+
# @param lipidos Cantida dde proteinas en gramos
|
47
|
+
# @return [Float] El cambio a kcal
|
48
|
+
def valor_lipidos (lipidos)
|
49
|
+
return (lipidos*9).round(1)
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
# @note Calculo de la energia del alimento
|
54
|
+
# @param valor_glucidos Kcal de los carbohidratos
|
55
|
+
# @param valor_proteinas Kcal de las proteinas
|
56
|
+
# @param valor_lipidos Kcal de los lipidos
|
57
|
+
# @return [Float] Valor energetico del alimento
|
58
|
+
def valor_energetico (valor_glucidos, valor_proteinas, valor_lipidos)
|
59
|
+
return (valor_glucidos + valor_proteinas + valor_lipidos).round(1)
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
# @note Calculo de emisiones de gases de un conjunto de alimentos
|
64
|
+
# @param persona Vector de conjunto de alimentos
|
65
|
+
# @param cuantos_persona Vector de cantidad de cada alimento
|
66
|
+
# @return [Float] Emisiones del conjunto de alimntos y sus respectivas cantidades
|
67
|
+
def impacto_ambiental(persona, cuantos_persona)
|
68
|
+
i = 0
|
69
|
+
impacto_amb = 0
|
70
|
+
while i < persona.length do
|
71
|
+
impacto_amb += persona[i].gei * cuantos_persona[i]
|
72
|
+
i += 1
|
73
|
+
end
|
74
|
+
return (impacto_amb).round(1)
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
# @note Calculo del terreno ocupado por un conjunto de alimentos
|
79
|
+
# @param persona Vector de conjunto de alimentos
|
80
|
+
# @param cuantos_persona Vector de cantidad de cada alimento
|
81
|
+
# @return [Float] Terreno ocupado por todos los alimentos y sus cantidades
|
82
|
+
def uso_terreno(persona, cuantos_persona)
|
83
|
+
i = 0
|
84
|
+
uso_ter = 0
|
85
|
+
while i < persona.length do
|
86
|
+
uso_ter += persona[i].terreno * cuantos_persona[i]
|
87
|
+
i += 1
|
88
|
+
end
|
89
|
+
return (uso_ter).round(1)
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
# @note Calculo de emisiones en un dia con una lista de alimentos
|
94
|
+
# @param list Lista de alimentos doblemente enlazada
|
95
|
+
# @return [Float] Suma de las emisiones (gei) de todos los alimentos de la lista
|
96
|
+
def emision_lista_dia(list)
|
97
|
+
actual = list.tail
|
98
|
+
sum_emision = 0
|
99
|
+
while actual.next != nil do
|
100
|
+
sum_emision += actual.value.gei
|
101
|
+
actual = actual.next
|
102
|
+
end
|
103
|
+
if actual = list.head
|
104
|
+
sum_emision += list.head.value.gei
|
105
|
+
end
|
106
|
+
return sum_emision.round(2)
|
107
|
+
end
|
108
|
+
|
109
|
+
# @note Calculo de las emisiones en un año con una lista de alimentos
|
110
|
+
# @param list Lista de alimentos doblemente enlazada
|
111
|
+
# @return [Float] Suma de las emisiones por un año
|
112
|
+
def emision_lista_anual(list)
|
113
|
+
return (emision_lista_dia(list) * 365).round(2)
|
114
|
+
end
|
115
|
+
|
116
|
+
# @note Calculo del terreno ocupado por una lista de alimentos
|
117
|
+
# @param list Lista de alimetos doblemente enlazada
|
118
|
+
# @return [Float] Terreno total ocupado por la lista de alimentos
|
119
|
+
def uso_lista_terreno(list)
|
120
|
+
actual = list.tail
|
121
|
+
sum_emision = 0
|
122
|
+
while actual.next != nil do
|
123
|
+
sum_emision += actual.value.terreno
|
124
|
+
actual = actual.next
|
125
|
+
end
|
126
|
+
if actual = list.head
|
127
|
+
sum_emision += list.head.value.terreno
|
128
|
+
end
|
129
|
+
return sum_emision.round(2)
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# @author Hernan Daniel Gonzalez Guanipa
|
2
|
+
module Alimento
|
3
|
+
|
4
|
+
# @note Estructura de datos correspondiente a un nodo
|
5
|
+
Node = Struct.new(:value, :next, :prev)
|
6
|
+
|
7
|
+
class List
|
8
|
+
|
9
|
+
include Enumerable
|
10
|
+
|
11
|
+
attr_reader :head, :tail
|
12
|
+
|
13
|
+
# @note Constructor de la clase
|
14
|
+
# @param value Contenido de un nodo
|
15
|
+
def initialize (value)
|
16
|
+
@head = Node.new(value, nil, nil)
|
17
|
+
@tail = @head
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
# @note Recorrer la lista
|
22
|
+
def each
|
23
|
+
return nil unless block_given?
|
24
|
+
actual = self.tail
|
25
|
+
while actual
|
26
|
+
yield actual
|
27
|
+
actual = actual.next
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
# @note Insertar elemento en la cabeza de la lista
|
33
|
+
# @param value Contenido del nodo a insertar
|
34
|
+
def insert_head(value)
|
35
|
+
actual_head = @head
|
36
|
+
new_head = Node.new(value, nil,actual_head)
|
37
|
+
actual_head.next = new_head
|
38
|
+
@head = new_head
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
# @note Insertar elemento por la cola de la lista
|
43
|
+
# @param value Contenido del nodo a insertar
|
44
|
+
def insert_tail(value)
|
45
|
+
actual_tail = @tail
|
46
|
+
new_tail = Node.new(value, actual_tail, nil)
|
47
|
+
actual_tail.prev = new_tail
|
48
|
+
@tail = new_tail
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
# @note Insertar varios elementos en la lista
|
53
|
+
# @param value_array Vector de elementos a insertar en la lista
|
54
|
+
def insert_sundry(value_array)
|
55
|
+
i = 0
|
56
|
+
while i < value_array.length do
|
57
|
+
insert_head(value_array[i])
|
58
|
+
i += 1
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
# @note Extraer el elemento en la cabeza de la lista
|
65
|
+
# @return [Node] Nodo de la lista extraido
|
66
|
+
def extract_head
|
67
|
+
actual_head = @head
|
68
|
+
new_head = actual_head.prev
|
69
|
+
actual_head.prev = nil
|
70
|
+
new_head.next = nil
|
71
|
+
return new_head
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
# @note Extraer elemento en la cabeza de la lista
|
76
|
+
# @return [Node] Nodo de la lista extraido
|
77
|
+
def extract_tail
|
78
|
+
actual_tail = @tail
|
79
|
+
new_tail = actual_tail.next
|
80
|
+
actual_tail.next = nil
|
81
|
+
new_tail.prev = nil
|
82
|
+
return new_tail
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Alimento
|
2
|
+
|
3
|
+
class MenuDSL
|
4
|
+
|
5
|
+
attr_reader :nombre, :descripcion_menu, :componentes_menu, :precios, :precio_total
|
6
|
+
|
7
|
+
def initialize(nombre, &block)
|
8
|
+
@nombre = nombre
|
9
|
+
@componentes_menu = []
|
10
|
+
@precios = []
|
11
|
+
@descripcion_menu = ""
|
12
|
+
@precio_total
|
13
|
+
|
14
|
+
if block_given?
|
15
|
+
if block.arity == 1
|
16
|
+
yield self
|
17
|
+
else
|
18
|
+
instance_eval(&block)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
def descripcion(descr)
|
25
|
+
@descripcion_menu = descr
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
def componente(options = {})
|
30
|
+
@componentes_menu << options[:platito] if options[:platito]
|
31
|
+
@precios << options[:precio] if options[:precio]
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
def precio(coste)
|
36
|
+
@precio_total = coste
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
def to_s
|
41
|
+
|
42
|
+
output = "Nombre de menu: #{@nombre}"
|
43
|
+
output += "\nPlatos:"
|
44
|
+
@componentes_menu.each {|iter|
|
45
|
+
if iter.platito == nil
|
46
|
+
iter.platillo()
|
47
|
+
end
|
48
|
+
|
49
|
+
output += "\n\n\tTipo: #{iter.platito.nombre}"
|
50
|
+
output += "\n\tValor Nutricional: #{iter.platito.VCT()}"
|
51
|
+
output += "\n\tValor Ambiental: #{iter.platito.emisiones_total()}"
|
52
|
+
}
|
53
|
+
output += "\n\nPrecio menú: #{@precio_total}"
|
54
|
+
output
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# @author Hernan Daniel Gonzalez Guanipa
|
2
|
+
module Alimento
|
3
|
+
|
4
|
+
class Plato
|
5
|
+
|
6
|
+
include Enumerable
|
7
|
+
include Comparable
|
8
|
+
|
9
|
+
attr_reader :nombre, :lista, :cantidades
|
10
|
+
|
11
|
+
|
12
|
+
# @note Constructor de la clase
|
13
|
+
# @param nombre Identificador del plato
|
14
|
+
# @param lista Lista de alimentos
|
15
|
+
# @param cantidades Vector de las cantidades de cada alimento
|
16
|
+
def initialize(nombre, lista, cantidades)
|
17
|
+
@nombre, @lista, @cantidades = nombre, lista, cantidades
|
18
|
+
end
|
19
|
+
|
20
|
+
# @note Comparador de platos
|
21
|
+
# @param otro Objeto de tipo plato con el que comparar
|
22
|
+
# @return Plato con mayor contenido en kcal
|
23
|
+
def <=>(otro)
|
24
|
+
VCT() <=> otro.VCT
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
# @note Calculo de las kcal totales de cada plato con sus cantidades
|
29
|
+
# @return [Float] Valor total de kcal
|
30
|
+
def VCT
|
31
|
+
total_kcal = 0
|
32
|
+
i = 0
|
33
|
+
@lista.each{ |iter|
|
34
|
+
total_kcal += (iter.value.valor_energetico(iter.value.valor_glucidos(iter.value.carbohidratos), iter.value.valor_proteinas(iter.value.proteinas), iter.value.valor_lipidos(iter.value.lipidos)) * @cantidades[i]/100)
|
35
|
+
i += 1
|
36
|
+
}
|
37
|
+
return total_kcal.round(1)
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
# @note Calculo del procentaje de proteinas del plato
|
42
|
+
# @return [Float] Porcentaje de proteinas
|
43
|
+
def porcentaje_proteinas
|
44
|
+
total = VCT()
|
45
|
+
proteinas =
|
46
|
+
i = 0
|
47
|
+
lista.each{|iter|
|
48
|
+
proteinas += iter.value.valor_proteinas(iter.value.proteinas * @cantidades[i]/100)
|
49
|
+
i += 1}
|
50
|
+
return ((proteinas * 100) / total).round(1)
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
# @note Calculo del procentaje de carbohidratos del plato
|
55
|
+
# @return [Float] Porcentaje de carbohidratos
|
56
|
+
def porcentaje_carbohidratos
|
57
|
+
total = VCT()
|
58
|
+
carbohidratos =
|
59
|
+
i = 0
|
60
|
+
lista.each{|iter|
|
61
|
+
carbohidratos += iter.value.valor_glucidos(iter.value.carbohidratos * @cantidades[i]/100)
|
62
|
+
i += 1}
|
63
|
+
return ((carbohidratos * 100) / total).round(1)
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
# @note Calculo del procentaje de lipidos del plato
|
68
|
+
# @return [Float] Porcentaje de lipidos
|
69
|
+
def porcentaje_lipidos
|
70
|
+
total = VCT()
|
71
|
+
lipidos =
|
72
|
+
i = 0
|
73
|
+
lista.each{|iter|
|
74
|
+
lipidos += iter.value.valor_lipidos(iter.value.lipidos * @cantidades[i]/100)
|
75
|
+
i += 1}
|
76
|
+
return ((lipidos * 100) / total).round(1)
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
# @note Formateo del plato
|
81
|
+
# @return [String] El nombre del plato y los alimentos que lo componen
|
82
|
+
def to_s
|
83
|
+
string = "Plato: #{nombre}, Componentes: "
|
84
|
+
i = 0
|
85
|
+
lista.collect{|iter|
|
86
|
+
string += "'#{iter.value.nombre} (#{cantidades[i]}g)' "
|
87
|
+
i += 1 }
|
88
|
+
|
89
|
+
return string
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|