prct06-TDD 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.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +7 -0
  5. data/Changelog.md +275 -0
  6. data/Gemfile +5 -0
  7. data/Gemfile.lock +93 -0
  8. data/Guardfile +83 -0
  9. data/README.md +39 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/docs/Alimento.html +1039 -0
  14. data/docs/Changelog_md.html +280 -0
  15. data/docs/Dieta.html +272 -0
  16. data/docs/Gema.html +110 -0
  17. data/docs/Gema/Error.html +103 -0
  18. data/docs/Gemfile.html +100 -0
  19. data/docs/Gemfile_lock.html +179 -0
  20. data/docs/Guardfile.html +171 -0
  21. data/docs/ListaDobleEnlazada.html +542 -0
  22. data/docs/Object.html +117 -0
  23. data/docs/Plato.html +567 -0
  24. data/docs/Plato/CompareMode.html +117 -0
  25. data/docs/PlatoEficienciaEnergetica.html +316 -0
  26. data/docs/README_md.html +143 -0
  27. data/docs/Rakefile.html +102 -0
  28. data/docs/bin/setup.html +102 -0
  29. data/docs/created.rid +23 -0
  30. data/docs/css/fonts.css +167 -0
  31. data/docs/css/rdoc.css +590 -0
  32. data/docs/fonts/Lato-Light.ttf +0 -0
  33. data/docs/fonts/Lato-LightItalic.ttf +0 -0
  34. data/docs/fonts/Lato-Regular.ttf +0 -0
  35. data/docs/fonts/Lato-RegularItalic.ttf +0 -0
  36. data/docs/fonts/SourceCodePro-Bold.ttf +0 -0
  37. data/docs/fonts/SourceCodePro-Regular.ttf +0 -0
  38. data/docs/images/add.png +0 -0
  39. data/docs/images/arrow_up.png +0 -0
  40. data/docs/images/brick.png +0 -0
  41. data/docs/images/brick_link.png +0 -0
  42. data/docs/images/bug.png +0 -0
  43. data/docs/images/bullet_black.png +0 -0
  44. data/docs/images/bullet_toggle_minus.png +0 -0
  45. data/docs/images/bullet_toggle_plus.png +0 -0
  46. data/docs/images/date.png +0 -0
  47. data/docs/images/delete.png +0 -0
  48. data/docs/images/find.png +0 -0
  49. data/docs/images/loadingAnimation.gif +0 -0
  50. data/docs/images/macFFBgHack.png +0 -0
  51. data/docs/images/package.png +0 -0
  52. data/docs/images/page_green.png +0 -0
  53. data/docs/images/page_white_text.png +0 -0
  54. data/docs/images/page_white_width.png +0 -0
  55. data/docs/images/plugin.png +0 -0
  56. data/docs/images/ruby.png +0 -0
  57. data/docs/images/tag_blue.png +0 -0
  58. data/docs/images/tag_green.png +0 -0
  59. data/docs/images/transparent.png +0 -0
  60. data/docs/images/wrench.png +0 -0
  61. data/docs/images/wrench_orange.png +0 -0
  62. data/docs/images/zoom.png +0 -0
  63. data/docs/index.html +123 -0
  64. data/docs/js/darkfish.js +161 -0
  65. data/docs/js/jquery.js +4 -0
  66. data/docs/js/navigation.js +141 -0
  67. data/docs/js/navigation.js.gz +0 -0
  68. data/docs/js/search.js +109 -0
  69. data/docs/js/search_index.js +1 -0
  70. data/docs/js/search_index.js.gz +0 -0
  71. data/docs/js/searcher.js +229 -0
  72. data/docs/js/searcher.js.gz +0 -0
  73. data/docs/prct06-TDD_gemspec.html +134 -0
  74. data/docs/table_of_contents.html +381 -0
  75. data/lib/Alimento.rb +205 -0
  76. data/lib/Dieta.rb +28 -0
  77. data/lib/Menu.rb +61 -0
  78. data/lib/Plato.rb +138 -0
  79. data/lib/Plato.rb.save +110 -0
  80. data/lib/PlatoEficienciaEnergetica.rb +32 -0
  81. data/lib/gema.rb +12 -0
  82. data/lib/gema/ListaDobleEnlazada.rb +103 -0
  83. data/lib/gema/version.rb +3 -0
  84. data/prct06-TDD.gemspec +37 -0
  85. metadata +214 -0
@@ -0,0 +1,381 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta charset="UTF-8">
6
+
7
+ <title>Table of Contents - RDoc Documentation</title>
8
+
9
+ <script type="text/javascript">
10
+ var rdoc_rel_prefix = "./";
11
+ var index_rel_prefix = "./";
12
+ </script>
13
+
14
+ <script src="./js/jquery.js"></script>
15
+ <script src="./js/darkfish.js"></script>
16
+
17
+ <link href="./css/fonts.css" rel="stylesheet">
18
+ <link href="./css/rdoc.css" rel="stylesheet">
19
+
20
+
21
+
22
+
23
+ <body id="top" class="table-of-contents">
24
+ <main role="main">
25
+ <h1 class="class">Table of Contents - RDoc Documentation</h1>
26
+
27
+
28
+
29
+ <h2 id="pages">Pages</h2>
30
+ <ul>
31
+
32
+ <li class="file">
33
+ <a href="Changelog_md.html">Changelog</a>
34
+
35
+ </li>
36
+
37
+ <li class="file">
38
+ <a href="Gemfile.html">Gemfile</a>
39
+
40
+ </li>
41
+
42
+ <li class="file">
43
+ <a href="Gemfile_lock.html">Gemfile.lock</a>
44
+
45
+ </li>
46
+
47
+ <li class="file">
48
+ <a href="Guardfile.html">Guardfile</a>
49
+
50
+ </li>
51
+
52
+ <li class="file">
53
+ <a href="README_md.html">README</a>
54
+
55
+ <ul>
56
+
57
+ <li><a href="README_md.html#label-Prct06-3A-3ATDD">Prct06::TDD</a>
58
+
59
+ <li><a href="README_md.html#label-Installation">Installation</a>
60
+
61
+ <li><a href="README_md.html#label-Usage">Usage</a>
62
+
63
+ <li><a href="README_md.html#label-Development">Development</a>
64
+
65
+ <li><a href="README_md.html#label-Contributing">Contributing</a>
66
+
67
+ </ul>
68
+
69
+ </li>
70
+
71
+ <li class="file">
72
+ <a href="Rakefile.html">Rakefile</a>
73
+
74
+ </li>
75
+
76
+ <li class="file">
77
+ <a href="bin/setup.html">setup</a>
78
+
79
+ </li>
80
+
81
+ <li class="file">
82
+ <a href="prct06-TDD_gemspec.html">prct06-TDD.gemspec</a>
83
+
84
+ </li>
85
+
86
+ </ul>
87
+
88
+
89
+ <h2 id="classes">Classes and Modules</h2>
90
+ <ul>
91
+
92
+ <li class="class">
93
+ <a href="Alimento.html">Alimento</a>
94
+
95
+ </li>
96
+
97
+ <li class="class">
98
+ <a href="Dieta.html">Dieta</a>
99
+
100
+ </li>
101
+
102
+ <li class="module">
103
+ <a href="Gema.html">Gema</a>
104
+
105
+ </li>
106
+
107
+ <li class="class">
108
+ <a href="Gema/Error.html">Gema::Error</a>
109
+
110
+ </li>
111
+
112
+ <li class="class">
113
+ <a href="ListaDobleEnlazada.html">ListaDobleEnlazada</a>
114
+
115
+ </li>
116
+
117
+ <li class="class">
118
+ <a href="Object.html">Object</a>
119
+
120
+ </li>
121
+
122
+ <li class="class">
123
+ <a href="Plato.html">Plato</a>
124
+
125
+ </li>
126
+
127
+ <li class="module">
128
+ <a href="Plato/CompareMode.html">Plato::CompareMode</a>
129
+
130
+ </li>
131
+
132
+ <li class="class">
133
+ <a href="PlatoEficienciaEnergetica.html">PlatoEficienciaEnergetica</a>
134
+
135
+ </li>
136
+
137
+ </ul>
138
+
139
+ <h2 id="methods">Methods</h2>
140
+ <ul>
141
+
142
+ <li class="method">
143
+ <a href="Dieta.html#method-c-alimentos">::alimentos</a>
144
+ &mdash;
145
+ <span class="container">Dieta</span>
146
+
147
+ <li class="method">
148
+ <a href="Alimento.html#method-c-build">::build</a>
149
+ &mdash;
150
+ <span class="container">Alimento</span>
151
+
152
+ <li class="method">
153
+ <a href="Alimento.html#method-c-constructHashFromFile">::constructHashFromFile</a>
154
+ &mdash;
155
+ <span class="container">Alimento</span>
156
+
157
+ <li class="method">
158
+ <a href="Alimento.html#method-c-constructListFromFile">::constructListFromFile</a>
159
+ &mdash;
160
+ <span class="container">Alimento</span>
161
+
162
+ <li class="method">
163
+ <a href="Alimento.html#method-c-copy">::copy</a>
164
+ &mdash;
165
+ <span class="container">Alimento</span>
166
+
167
+ <li class="method">
168
+ <a href="Alimento.html#method-c-new">::new</a>
169
+ &mdash;
170
+ <span class="container">Alimento</span>
171
+
172
+ <li class="method">
173
+ <a href="Plato.html#method-c-new">::new</a>
174
+ &mdash;
175
+ <span class="container">Plato</span>
176
+
177
+ <li class="method">
178
+ <a href="PlatoEficienciaEnergetica.html#method-c-new">::new</a>
179
+ &mdash;
180
+ <span class="container">PlatoEficienciaEnergetica</span>
181
+
182
+ <li class="method">
183
+ <a href="ListaDobleEnlazada.html#method-c-new">::new</a>
184
+ &mdash;
185
+ <span class="container">ListaDobleEnlazada</span>
186
+
187
+ <li class="method">
188
+ <a href="Alimento.html#method-c-setCantidad">::setCantidad</a>
189
+ &mdash;
190
+ <span class="container">Alimento</span>
191
+
192
+ <li class="method">
193
+ <a href="Alimento.html#method-c-setCarbohidratos">::setCarbohidratos</a>
194
+ &mdash;
195
+ <span class="container">Alimento</span>
196
+
197
+ <li class="method">
198
+ <a href="Plato.html#method-c-setCompareMode">::setCompareMode</a>
199
+ &mdash;
200
+ <span class="container">Plato</span>
201
+
202
+ <li class="method">
203
+ <a href="Alimento.html#method-c-setGEI">::setGEI</a>
204
+ &mdash;
205
+ <span class="container">Alimento</span>
206
+
207
+ <li class="method">
208
+ <a href="Alimento.html#method-c-setLipidos">::setLipidos</a>
209
+ &mdash;
210
+ <span class="container">Alimento</span>
211
+
212
+ <li class="method">
213
+ <a href="Alimento.html#method-c-setNombre">::setNombre</a>
214
+ &mdash;
215
+ <span class="container">Alimento</span>
216
+
217
+ <li class="method">
218
+ <a href="Alimento.html#method-c-setProteinas">::setProteinas</a>
219
+ &mdash;
220
+ <span class="container">Alimento</span>
221
+
222
+ <li class="method">
223
+ <a href="Alimento.html#method-c-setTerreno">::setTerreno</a>
224
+ &mdash;
225
+ <span class="container">Alimento</span>
226
+
227
+ <li class="method">
228
+ <a href="Alimento.html#method-i-3C-3D-3E">#&lt;=&gt;</a>
229
+ &mdash;
230
+ <span class="container">Alimento</span>
231
+
232
+ <li class="method">
233
+ <a href="Plato.html#method-i-3C-3D-3E">#&lt;=&gt;</a>
234
+ &mdash;
235
+ <span class="container">Plato</span>
236
+
237
+ <li class="method">
238
+ <a href="Dieta.html#method-i-calculoEmisiones">#calculoEmisiones</a>
239
+ &mdash;
240
+ <span class="container">Dieta</span>
241
+
242
+ <li class="method">
243
+ <a href="Alimento.html#method-i-cantidadNecesaria">#cantidadNecesaria</a>
244
+ &mdash;
245
+ <span class="container">Alimento</span>
246
+
247
+ <li class="method">
248
+ <a href="Alimento.html#method-i-carbohidratos">#carbohidratos</a>
249
+ &mdash;
250
+ <span class="container">Alimento</span>
251
+
252
+ <li class="method">
253
+ <a href="ListaDobleEnlazada.html#method-i-each">#each</a>
254
+ &mdash;
255
+ <span class="container">ListaDobleEnlazada</span>
256
+
257
+ <li class="method">
258
+ <a href="Dieta.html#method-i-emisiones">#emisiones</a>
259
+ &mdash;
260
+ <span class="container">Dieta</span>
261
+
262
+ <li class="method">
263
+ <a href="ListaDobleEnlazada.html#method-i-extract_head">#extract_head</a>
264
+ &mdash;
265
+ <span class="container">ListaDobleEnlazada</span>
266
+
267
+ <li class="method">
268
+ <a href="ListaDobleEnlazada.html#method-i-extract_tail">#extract_tail</a>
269
+ &mdash;
270
+ <span class="container">ListaDobleEnlazada</span>
271
+
272
+ <li class="method">
273
+ <a href="Plato.html#method-i-extracted">#extracted</a>
274
+ &mdash;
275
+ <span class="container">Plato</span>
276
+
277
+ <li class="method">
278
+ <a href="PlatoEficienciaEnergetica.html#method-i-extracted">#extracted</a>
279
+ &mdash;
280
+ <span class="container">PlatoEficienciaEnergetica</span>
281
+
282
+ <li class="method">
283
+ <a href="ListaDobleEnlazada.html#method-i-extracted">#extracted</a>
284
+ &mdash;
285
+ <span class="container">ListaDobleEnlazada</span>
286
+
287
+ <li class="method">
288
+ <a href="Alimento.html#method-i-gei">#gei</a>
289
+ &mdash;
290
+ <span class="container">Alimento</span>
291
+
292
+ <li class="method">
293
+ <a href="Plato.html#method-i-huellaNutricional">#huellaNutricional</a>
294
+ &mdash;
295
+ <span class="container">Plato</span>
296
+
297
+ <li class="method">
298
+ <a href="ListaDobleEnlazada.html#method-i-insert">#insert</a>
299
+ &mdash;
300
+ <span class="container">ListaDobleEnlazada</span>
301
+
302
+ <li class="method">
303
+ <a href="ListaDobleEnlazada.html#method-i-insertList">#insertList</a>
304
+ &mdash;
305
+ <span class="container">ListaDobleEnlazada</span>
306
+
307
+ <li class="method">
308
+ <a href="Plato.html#method-i-inserted">#inserted</a>
309
+ &mdash;
310
+ <span class="container">Plato</span>
311
+
312
+ <li class="method">
313
+ <a href="PlatoEficienciaEnergetica.html#method-i-inserted">#inserted</a>
314
+ &mdash;
315
+ <span class="container">PlatoEficienciaEnergetica</span>
316
+
317
+ <li class="method">
318
+ <a href="ListaDobleEnlazada.html#method-i-inserted">#inserted</a>
319
+ &mdash;
320
+ <span class="container">ListaDobleEnlazada</span>
321
+
322
+ <li class="method">
323
+ <a href="Alimento.html#method-i-lipidos">#lipidos</a>
324
+ &mdash;
325
+ <span class="container">Alimento</span>
326
+
327
+ <li class="method">
328
+ <a href="Alimento.html#method-i-proteinas">#proteinas</a>
329
+ &mdash;
330
+ <span class="container">Alimento</span>
331
+
332
+ <li class="method">
333
+ <a href="Alimento.html#method-i-setCantidad">#setCantidad</a>
334
+ &mdash;
335
+ <span class="container">Alimento</span>
336
+
337
+ <li class="method">
338
+ <a href="Alimento.html#method-i-terreno">#terreno</a>
339
+ &mdash;
340
+ <span class="container">Alimento</span>
341
+
342
+ <li class="method">
343
+ <a href="Dieta.html#method-i-terreno">#terreno</a>
344
+ &mdash;
345
+ <span class="container">Dieta</span>
346
+
347
+ <li class="method">
348
+ <a href="Alimento.html#method-i-to_s">#to_s</a>
349
+ &mdash;
350
+ <span class="container">Alimento</span>
351
+
352
+ <li class="method">
353
+ <a href="Plato.html#method-i-to_s">#to_s</a>
354
+ &mdash;
355
+ <span class="container">Plato</span>
356
+
357
+ <li class="method">
358
+ <a href="PlatoEficienciaEnergetica.html#method-i-to_s">#to_s</a>
359
+ &mdash;
360
+ <span class="container">PlatoEficienciaEnergetica</span>
361
+
362
+ <li class="method">
363
+ <a href="ListaDobleEnlazada.html#method-i-to_s">#to_s</a>
364
+ &mdash;
365
+ <span class="container">ListaDobleEnlazada</span>
366
+
367
+ <li class="method">
368
+ <a href="Alimento.html#method-i-valorEnergetico">#valorEnergetico</a>
369
+ &mdash;
370
+ <span class="container">Alimento</span>
371
+
372
+ </ul>
373
+ </main>
374
+
375
+
376
+ <footer id="validator-badges" role="contentinfo">
377
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
378
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.0.
379
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
380
+ </footer>
381
+
data/lib/Alimento.rb ADDED
@@ -0,0 +1,205 @@
1
+ #Esta clase representa un Alimento y las propiedades de este (nombre,cantidad,proteinas,carbohidratos,lipidos,...)
2
+ class Alimento
3
+ @@nombre = ""
4
+ @@proteinas = 0
5
+ @@carbohidratos = 0
6
+ @@lipidos = 0
7
+ @@gei = 0
8
+ @@terreno = 0
9
+ @@cantidad = 1
10
+ class << self
11
+ #Define el parametro 'nombre' de la clase Alimento que el Constructor seteará.
12
+ # @param [Nombre] nombre Nombre del plato.
13
+ def setNombre(nombre)
14
+ @@nombre = nombre
15
+ return self
16
+ end
17
+ #Define el parametro 'proteinas'(en g) de la clase Alimento que el constructor seteará.
18
+ # @param [Proteinas] carbohidratos Cantidad de proteinas, en g, que el alimento otorga.
19
+ def setProteinas(proteinas)
20
+ @@proteinas = proteinas
21
+ return self
22
+ end
23
+ #Define el parametro 'carbohidratos'(en g) de la clase Alimento que el Constructor seteará.
24
+ # @param [Carbohidratos] carbohidratos Cantidad de carbohidratos, en g, que el alimento otorga.
25
+ def setCarbohidratos(carbohidratos)
26
+ @@carbohidratos = carbohidratos
27
+ return self
28
+ end
29
+ #Define el parametro 'lipidos'(en g) de la clase Alimento que el Constructor seteará.
30
+ # @param [Lipidos] lipidos Cantidad de lipidos, en g, que el alimento otorga.
31
+ def setLipidos(lipidos)
32
+ @@lipidos = lipidos
33
+ return self
34
+ end
35
+ #Define el parametro 'gei'(gases de efecto invernadero) de la clase Alimento que el Constructor seteará.
36
+ # @param [Float] gei Gases de Efecto Invernandero, en kgCO2 , que el alimento produce en su producción.
37
+ def setGEI(gei)
38
+ @@gei = gei
39
+ return self
40
+ end
41
+ #Define el parametro 'terreno'(en m^2 necesarios para producir el alimento) de la clase Alimento que el Constructor seteará.
42
+ # @param [Float] terreno Terreno necesario, en m^2, para producir el alimento.
43
+ def setTerreno(terreno)
44
+ @@terreno = terreno
45
+ return self
46
+ end
47
+ #Define el parametro 'peso'(en kg) de la clase Alimento que el Constructor seteará.
48
+ # @param [Float] cantidad Peso del alimento en Kg.
49
+ def setCantidad(cantidad)
50
+ @@cantidad = cantidad
51
+ return self
52
+ end
53
+ #Construye una nueva instancia de la clase Alimento con los atributos seteados previamente(setTerreno,setCantidad,...) y la devuelve.
54
+ def build()
55
+ return Alimento.new(@@nombre,@@proteinas,@@carbohidratos,@@lipidos,@@gei,@@terreno)
56
+ end
57
+ #Construye una lista de instancias de la clase Alimentos de acuerdo al contenido de un fichero.
58
+ #Los parametros se separan por espacios en blanco(\s).
59
+ #Los distintos alimentos se separan por saltos de linea(\n).
60
+ # @param [String] input Contenido del fichero en una cadena.
61
+ def constructListFromFile(input)
62
+ result = Array.new()
63
+ size = input.size/6
64
+ for i in 0..size-1
65
+ alimento = Alimento.new(input[6*i], input[6*i+1].to_f, input[6*i+2].to_f, input[6*i+3].to_f, input[6*i+4].to_f, input[6*i+5].to_f)
66
+ result.append( alimento )
67
+ end
68
+ return result
69
+ end
70
+ #Construye un diccionario de instancias de la clase Alimentos, con key == nombre del alimento de acuerdo al contenido de un fichero.
71
+ #Los parametros se separan por espacios en blanco(\s).
72
+ #Los distintos alimentos se separan por saltos de linea(\n).
73
+ # @param [String] input Contenido del fichero en una cadena.
74
+ def constructHashFromFile(input)
75
+ result = Hash.new()
76
+ size = input.size/6
77
+ for i in 0..size-1
78
+ alimento = Alimento.new(input[6*i], input[6*i+1].to_f, input[6*i+2].to_f, input[6*i+3].to_f, input[6*i+4].to_f, input[6*i+5].to_f)
79
+ result.store(input[6*i] , alimento )
80
+ end
81
+ return result
82
+ end
83
+
84
+ #Devuelve una instancia copia de la clase Alimento dado otra instancia de la clase Alimento pasado como parametro.
85
+ # @param [Alimento] copy instancia de la clase Alimento que se desea copiar en otra instancia.
86
+ def copy(copy)
87
+ return Alimento.new(copy.nombre,copy.proteinas,copy.carbohidratos,copy.lipidos,copy.gei,copy.terreno)
88
+ end
89
+ end
90
+
91
+ include Comparable
92
+ attr_reader :nombre, :cantidad, :huellaNutricional
93
+ # attr_accessor :cantidad
94
+
95
+ #Define la cantidad, en kg, del alimento.
96
+ # @param [Float] cantidad .
97
+ def setCantidad(cantidad)
98
+ @cantidad = cantidad
99
+ return self
100
+ end
101
+
102
+
103
+ #Recupera la cantidad de proteinas, en g, del alimento (relativo a la cantidad del alimento).
104
+ def proteinas
105
+ return @proteinas*@cantidad
106
+ end
107
+ #Recupera la cantidad de carbohidratos,en g, del alimento (relativo a la cantidad del alimento).
108
+ def carbohidratos
109
+ return @carbohidratos*@cantidad
110
+ end
111
+ #Recupera la cantidad de lipidos,en g, del alimento (relativo a la cantidad del alimento).
112
+ def lipidos
113
+ return @lipidos*@cantidad
114
+ end
115
+ #Recupera la cantidad de gases de efecto invernadero producidos, en KgCO2, en la producción del alimento (relativo a la cantidad del alimento).
116
+ def gei
117
+ return @gei*@cantidad
118
+ end
119
+ #Recupera la cantidad de m^2 de terreno necesario para producir el alimento (relativo a la cantidad del alimento).
120
+ def terreno
121
+ return @terreno*@cantidad
122
+ end
123
+ #Recupera el valor Energetico, en kcal, que produce la ingesta del alimento (relativo a la cantidad del alimento).
124
+ def valorEnergetico
125
+ return @valorEnergetico*@cantidad
126
+ end
127
+
128
+ #Constructor de instancias de la clase Alimento.
129
+ # @param [String] nombre.
130
+ # @param [Float] proteinas.
131
+ # @param [Float] carbohidratos.
132
+ # @param [Float] lipidos.
133
+ # @param [Float] gei.
134
+ # @param [Float] terreno.
135
+ def initialize(nombre,proteinas,carbohidratos,lipidos, gei,terreno,cantidad = 1.0)
136
+ @nombre = nombre
137
+ @proteinas = proteinas
138
+ @carbohidratos = carbohidratos
139
+ @lipidos = lipidos
140
+ @gei = gei
141
+ @terreno = terreno
142
+
143
+ @valorEnergetico = (@proteinas * 4 ) + (@carbohidratos * 4) + (@lipidos * 9)
144
+ @cantidad = cantidad #En Kg
145
+ impactoEnergia = case @valorEnergetico
146
+ when 0..67 then 1
147
+ when 670..83 then 2
148
+ else 3
149
+ end
150
+ impactoHuellaDeCarbono = case @gei
151
+ when 0..80 then 1
152
+ when 80..120 then 2
153
+ else 3
154
+ end
155
+ @huellaNutricional = (impactoEnergia + impactoHuellaDeCarbono)/2
156
+ end
157
+
158
+ #Devuelve la cantidad necesaria, en kg, que hay que ingerir del alimento para ingerir cal_nec kcal y prot_nec g de proteínas.
159
+ # @param [Float] cal_nec Calorías, en kcal, que hay que ingerir.
160
+ # @param [Float] prot_nec Proteinas, en g, que hay que ingerir.
161
+ def cantidadNecesaria(cal_nec, prot_nec)
162
+ #Los datos del alimento se corresponden a los nutrientes para 1 kg de dicho alimento
163
+ #Entonces, dado que primero debemos satisfacer las proteinas necesarias:
164
+ kg_a_consumir_para_prot_nec = prot_nec / @proteinas.to_f()
165
+ #Tenemos los kg, esos kg consumidos tambien otorgan calorias,asi que restamos a las calorias necesarias:
166
+ cal_rest = cal_nec - (kg_a_consumir_para_prot_nec * @valorEnergetico) #kcal = kcal - (kg * kcal/kg)
167
+ #Ahora, calculamos los kg necesarios para consumir las cal_rest
168
+ kg_a_consumir = cal_rest / @valorEnergetico.to_f() # kg = kcal / (kcal/kg)
169
+ #Sumamos kg_a_consumir para las caloreias, y kg_a_consumir_para_prot_nec para el minimo proteinas necesarioas
170
+ kg_nec = kg_a_consumir + kg_a_consumir_para_prot_nec
171
+ return kg_nec
172
+ end
173
+
174
+ #Devuelve un string que es el alimento formateado para ser entendible por un humano.
175
+ def to_s
176
+ return "[Nombre:#{@nombre}, Peso:#{@cantidad} kg, Proteinas:#{proteinas.round(2)} g, Carbohidratos:#{carbohidratos.round(2)} g, Lipidos:#{lipidos.round(2)} g, Valor Energetico:#{valorEnergetico.round(2)} kcal, Emisiones: #{gei.round(2)} kgCO2, Terreno Usado:#{terreno.round(2)} m^2]"
177
+ end
178
+
179
+ # def terrenoUsado(kg)
180
+ # return @terreno*kg
181
+ # end
182
+
183
+ # def impactoAmbiental(kg)
184
+ # return @gei*kg
185
+ # end
186
+ #require 'pry'
187
+
188
+ #Metodo que debe ser implementado para que la incorporación del modulo 'Comparable' funcione correctamente de acuerdo a las propiedades del Alimento.
189
+ def <=>(other)
190
+ # binding.pry
191
+ return nil unless other.instance_of? Alimento
192
+ valorEnergetico <=> other.valorEnergetico
193
+ end
194
+
195
+ # def ==(other)
196
+ # return false unless other.instance_of? Alimento
197
+ # return true if (@valorEnergetico == other.valorEnergetico && @proteinas == other.proteinas)
198
+ # return false
199
+ # end
200
+
201
+ # def +(other)
202
+ # return nil unless other.instance_of? Alimento
203
+ # return Alimento.new("#{@nombre} y #{other.nombre}",@proteinas + other.proteinas, @carbohidratos + other.carbohidratos, @lipidos + other.lipidos, @gei + other.gei, @terreno + other.terreno)
204
+ # end
205
+ end