gemaalu0100884982 0.1.1
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 +9 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/Guardfile +82 -0
- data/README.md +11 -0
- data/Rakefile +21 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/doc/Dieta.html +681 -0
- data/doc/Gema.html +97 -0
- data/doc/Gemfile.html +120 -0
- data/doc/Gemfile_lock.html +204 -0
- data/doc/Guardfile.html +200 -0
- data/doc/Lista.html +587 -0
- data/doc/Menu_Alimentos.html +234 -0
- data/doc/Menu_Edad.html +234 -0
- data/doc/Object.html +116 -0
- data/doc/README_md.html +129 -0
- data/doc/README_md~.html +128 -0
- data/doc/Rakefile.html +140 -0
- data/doc/Rakefile~.html +140 -0
- data/doc/bin/setup.html +121 -0
- data/doc/created.rid +30 -0
- data/doc/css/fonts.css +167 -0
- data/doc/css/rdoc.css +590 -0
- data/doc/fonts/Lato-Light.ttf +0 -0
- data/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/doc/fonts/Lato-Regular.ttf +0 -0
- data/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/doc/gema_gemspec.html +155 -0
- data/doc/gema_gemspec~.html +156 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +135 -0
- data/doc/js/darkfish.js +161 -0
- data/doc/js/jquery.js +4 -0
- data/doc/js/navigation.js +142 -0
- data/doc/js/navigation.js.gz +0 -0
- data/doc/js/search.js +109 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/search_index.js.gz +0 -0
- data/doc/js/searcher.js +228 -0
- data/doc/js/searcher.js.gz +0 -0
- data/doc/lib/gema/dieta_rb~.html +253 -0
- data/doc/lib/gema/lista_dll_rb~.html +253 -0
- data/doc/lib/gema/lista_rb~.html +241 -0
- data/doc/lib/gema/version_rb~.html +122 -0
- data/doc/lib/gema_rb~.html +123 -0
- data/doc/spec/dieta_spec_rb~.html +286 -0
- data/doc/spec/herenciadieta_spec_rb~.html +222 -0
- data/doc/spec/lista_spec_rb~.html +396 -0
- data/doc/spec/spec_helper_rb~.html +118 -0
- data/doc/table_of_contents.html +258 -0
- data/gema.gemspec +40 -0
- data/lib/gema.rb +6 -0
- data/lib/gema/dieta.rb +134 -0
- data/lib/gema/dieta_dsl.rb +188 -0
- data/lib/gema/lista_dll.rb +157 -0
- data/lib/gema/version.rb +4 -0
- metadata +228 -0
@@ -0,0 +1,258 @@
|
|
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
|
+
</script>
|
12
|
+
|
13
|
+
<script src="./js/jquery.js"></script>
|
14
|
+
<script src="./js/darkfish.js"></script>
|
15
|
+
|
16
|
+
<link href="./css/fonts.css" rel="stylesheet">
|
17
|
+
<link href="./css/rdoc.css" rel="stylesheet">
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
<body id="top" class="table-of-contents">
|
22
|
+
<main role="main">
|
23
|
+
<h1 class="class">Table of Contents - RDoc Documentation</h1>
|
24
|
+
|
25
|
+
<h2 id="pages">Pages</h2>
|
26
|
+
<ul>
|
27
|
+
<li class="file">
|
28
|
+
<a href="Gemfile.html">Gemfile</a>
|
29
|
+
</li>
|
30
|
+
<li class="file">
|
31
|
+
<a href="Gemfile_lock.html">Gemfile.lock</a>
|
32
|
+
</li>
|
33
|
+
<li class="file">
|
34
|
+
<a href="Guardfile.html">Guardfile</a>
|
35
|
+
</li>
|
36
|
+
<li class="file">
|
37
|
+
<a href="README_md.html">README</a>
|
38
|
+
|
39
|
+
<ul>
|
40
|
+
<li><a href="README_md.html#label-23TDD+Lista">#TDD Lista</a>
|
41
|
+
</ul>
|
42
|
+
</li>
|
43
|
+
<li class="file">
|
44
|
+
<a href="README_md~.html">README.md~</a>
|
45
|
+
|
46
|
+
<ul>
|
47
|
+
<li><a href="README_md~.html#label-"></a>
|
48
|
+
</ul>
|
49
|
+
</li>
|
50
|
+
<li class="file">
|
51
|
+
<a href="Rakefile.html">Rakefile</a>
|
52
|
+
</li>
|
53
|
+
<li class="file">
|
54
|
+
<a href="Rakefile~.html">Rakefile~</a>
|
55
|
+
</li>
|
56
|
+
<li class="file">
|
57
|
+
<a href="bin/setup.html">setup</a>
|
58
|
+
</li>
|
59
|
+
<li class="file">
|
60
|
+
<a href="gema_gemspec.html">gema.gemspec</a>
|
61
|
+
</li>
|
62
|
+
<li class="file">
|
63
|
+
<a href="gema_gemspec~.html">gema.gemspec~</a>
|
64
|
+
</li>
|
65
|
+
<li class="file">
|
66
|
+
<a href="lib/gema_rb~.html">gema.rb~</a>
|
67
|
+
</li>
|
68
|
+
<li class="file">
|
69
|
+
<a href="lib/gema/dieta_rb~.html">dieta.rb~</a>
|
70
|
+
</li>
|
71
|
+
<li class="file">
|
72
|
+
<a href="lib/gema/lista_rb~.html">lista.rb~</a>
|
73
|
+
</li>
|
74
|
+
<li class="file">
|
75
|
+
<a href="lib/gema/lista_dll_rb~.html">lista_dll.rb~</a>
|
76
|
+
</li>
|
77
|
+
<li class="file">
|
78
|
+
<a href="lib/gema/version_rb~.html">version.rb~</a>
|
79
|
+
</li>
|
80
|
+
<li class="file">
|
81
|
+
<a href="spec/dieta_spec_rb~.html">dieta_spec.rb~</a>
|
82
|
+
</li>
|
83
|
+
<li class="file">
|
84
|
+
<a href="spec/herenciadieta_spec_rb~.html">herenciadieta_spec.rb~</a>
|
85
|
+
</li>
|
86
|
+
<li class="file">
|
87
|
+
<a href="spec/lista_spec_rb~.html">lista_spec.rb~</a>
|
88
|
+
</li>
|
89
|
+
<li class="file">
|
90
|
+
<a href="spec/spec_helper_rb~.html">spec_helper.rb~</a>
|
91
|
+
</li>
|
92
|
+
|
93
|
+
</ul>
|
94
|
+
|
95
|
+
<h2 id="classes">Classes and Modules</h2>
|
96
|
+
<ul>
|
97
|
+
<li class="class">
|
98
|
+
<a href="Dieta.html">Dieta</a>
|
99
|
+
</li>
|
100
|
+
<li class="module">
|
101
|
+
<a href="Gema.html">Gema</a>
|
102
|
+
</li>
|
103
|
+
<li class="class">
|
104
|
+
<a href="Lista.html">Lista</a>
|
105
|
+
</li>
|
106
|
+
<li class="class">
|
107
|
+
<a href="Menu_Alimentos.html">Menu_Alimentos</a>
|
108
|
+
</li>
|
109
|
+
<li class="class">
|
110
|
+
<a href="Menu_Edad.html">Menu_Edad</a>
|
111
|
+
</li>
|
112
|
+
<li class="class">
|
113
|
+
<a href="Object.html">Object</a>
|
114
|
+
</li>
|
115
|
+
</ul>
|
116
|
+
|
117
|
+
<h2 id="methods">Methods</h2>
|
118
|
+
<ul>
|
119
|
+
|
120
|
+
<li class="method">
|
121
|
+
<a href="Dieta.html#method-c-new">::new</a>
|
122
|
+
—
|
123
|
+
<span class="container">Dieta</span>
|
124
|
+
|
125
|
+
<li class="method">
|
126
|
+
<a href="Menu_Edad.html#method-c-new">::new</a>
|
127
|
+
—
|
128
|
+
<span class="container">Menu_Edad</span>
|
129
|
+
|
130
|
+
<li class="method">
|
131
|
+
<a href="Menu_Alimentos.html#method-c-new">::new</a>
|
132
|
+
—
|
133
|
+
<span class="container">Menu_Alimentos</span>
|
134
|
+
|
135
|
+
<li class="method">
|
136
|
+
<a href="Lista.html#method-c-new">::new</a>
|
137
|
+
—
|
138
|
+
<span class="container">Lista</span>
|
139
|
+
|
140
|
+
<li class="method">
|
141
|
+
<a href="Dieta.html#method-i-3C-3D-3E">#<=></a>
|
142
|
+
—
|
143
|
+
<span class="container">Dieta</span>
|
144
|
+
|
145
|
+
<li class="method">
|
146
|
+
<a href="Dieta.html#method-i-3D-3D">#==</a>
|
147
|
+
—
|
148
|
+
<span class="container">Dieta</span>
|
149
|
+
|
150
|
+
<li class="method">
|
151
|
+
<a href="Lista.html#method-i-each">#each</a>
|
152
|
+
—
|
153
|
+
<span class="container">Lista</span>
|
154
|
+
|
155
|
+
<li class="method">
|
156
|
+
<a href="Dieta.html#method-i-get_desc_plato">#get_desc_plato</a>
|
157
|
+
—
|
158
|
+
<span class="container">Dieta</span>
|
159
|
+
|
160
|
+
<li class="method">
|
161
|
+
<a href="Dieta.html#method-i-get_grasas">#get_grasas</a>
|
162
|
+
—
|
163
|
+
<span class="container">Dieta</span>
|
164
|
+
|
165
|
+
<li class="method">
|
166
|
+
<a href="Dieta.html#method-i-get_hidratos">#get_hidratos</a>
|
167
|
+
—
|
168
|
+
<span class="container">Dieta</span>
|
169
|
+
|
170
|
+
<li class="method">
|
171
|
+
<a href="Dieta.html#method-i-get_ingesta_diaria">#get_ingesta_diaria</a>
|
172
|
+
—
|
173
|
+
<span class="container">Dieta</span>
|
174
|
+
|
175
|
+
<li class="method">
|
176
|
+
<a href="Dieta.html#method-i-get_plato">#get_plato</a>
|
177
|
+
—
|
178
|
+
<span class="container">Dieta</span>
|
179
|
+
|
180
|
+
<li class="method">
|
181
|
+
<a href="Dieta.html#method-i-get_platos">#get_platos</a>
|
182
|
+
—
|
183
|
+
<span class="container">Dieta</span>
|
184
|
+
|
185
|
+
<li class="method">
|
186
|
+
<a href="Dieta.html#method-i-get_proteinas">#get_proteinas</a>
|
187
|
+
—
|
188
|
+
<span class="container">Dieta</span>
|
189
|
+
|
190
|
+
<li class="method">
|
191
|
+
<a href="Dieta.html#method-i-get_titulo">#get_titulo</a>
|
192
|
+
—
|
193
|
+
<span class="container">Dieta</span>
|
194
|
+
|
195
|
+
<li class="method">
|
196
|
+
<a href="Dieta.html#method-i-get_vct">#get_vct</a>
|
197
|
+
—
|
198
|
+
<span class="container">Dieta</span>
|
199
|
+
|
200
|
+
<li class="method">
|
201
|
+
<a href="Lista.html#method-i-is_vacia-3F">#is_vacia?</a>
|
202
|
+
—
|
203
|
+
<span class="container">Lista</span>
|
204
|
+
|
205
|
+
<li class="method">
|
206
|
+
<a href="Lista.html#method-i-pop">#pop</a>
|
207
|
+
—
|
208
|
+
<span class="container">Lista</span>
|
209
|
+
|
210
|
+
<li class="method">
|
211
|
+
<a href="Lista.html#method-i-pop_tail">#pop_tail</a>
|
212
|
+
—
|
213
|
+
<span class="container">Lista</span>
|
214
|
+
|
215
|
+
<li class="method">
|
216
|
+
<a href="Lista.html#method-i-push">#push</a>
|
217
|
+
—
|
218
|
+
<span class="container">Lista</span>
|
219
|
+
|
220
|
+
<li class="method">
|
221
|
+
<a href="Lista.html#method-i-push_tail">#push_tail</a>
|
222
|
+
—
|
223
|
+
<span class="container">Lista</span>
|
224
|
+
|
225
|
+
<li class="method">
|
226
|
+
<a href="Dieta.html#method-i-to_s">#to_s</a>
|
227
|
+
—
|
228
|
+
<span class="container">Dieta</span>
|
229
|
+
|
230
|
+
<li class="method">
|
231
|
+
<a href="Menu_Edad.html#method-i-to_s">#to_s</a>
|
232
|
+
—
|
233
|
+
<span class="container">Menu_Edad</span>
|
234
|
+
|
235
|
+
<li class="method">
|
236
|
+
<a href="Menu_Alimentos.html#method-i-to_s">#to_s</a>
|
237
|
+
—
|
238
|
+
<span class="container">Menu_Alimentos</span>
|
239
|
+
|
240
|
+
<li class="method">
|
241
|
+
<a href="Lista.html#method-i-to_s">#to_s</a>
|
242
|
+
—
|
243
|
+
<span class="container">Lista</span>
|
244
|
+
|
245
|
+
<li class="method">
|
246
|
+
<a href="Lista.html#method-i-vaciar">#vaciar</a>
|
247
|
+
—
|
248
|
+
<span class="container">Lista</span>
|
249
|
+
</ul>
|
250
|
+
</main>
|
251
|
+
|
252
|
+
|
253
|
+
<footer id="validator-badges" role="contentinfo">
|
254
|
+
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
255
|
+
<p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.1.
|
256
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
257
|
+
</footer>
|
258
|
+
|
data/gema.gemspec
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'gema/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "gemaalu0100884982"
|
8
|
+
spec.version = Gema::VERSION
|
9
|
+
spec.authors = ["alu0100884982"]
|
10
|
+
spec.email = ["alu0100884982@ull.edu.es"]
|
11
|
+
|
12
|
+
spec.summary = %q{Practica 11 LPP}
|
13
|
+
spec.description = %q{Diseño e implementación de un DSL, siguiendo la filosofía de Ruby, que permite la definición de menús dietéticos. También, utilización de pruebas TDD a través de RSpec(expectativas).}
|
14
|
+
spec.homepage = "https://github.com/ULL-ESIT-LPP-1617/menu-dietetico-alu0100884982"
|
15
|
+
|
16
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
17
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
18
|
+
#if spec.respond_to?(:metadata)
|
19
|
+
#spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
20
|
+
# else
|
21
|
+
#raise "RubyGems 2.0 or newer is required to protect against " \
|
22
|
+
# "public gem pushes."
|
23
|
+
# end
|
24
|
+
|
25
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
26
|
+
f.match(%r{^(test|spec|features)/})
|
27
|
+
end
|
28
|
+
spec.bindir = "exe"
|
29
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
30
|
+
spec.require_paths = ["lib"]
|
31
|
+
|
32
|
+
spec.add_development_dependency "rb-readline"
|
33
|
+
spec.add_development_dependency "bundler", "~> 1.13"
|
34
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
35
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
36
|
+
spec.add_development_dependency "guard"
|
37
|
+
spec.add_development_dependency "guard-rspec"
|
38
|
+
spec.add_development_dependency "guard-bundler"
|
39
|
+
|
40
|
+
end
|
data/lib/gema.rb
ADDED
data/lib/gema/dieta.rb
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
#Clase Dieta
|
2
|
+
class Dieta
|
3
|
+
#Se incluye el módulo Comparable para que la clase Lista se convierta en Comparable
|
4
|
+
include Comparable
|
5
|
+
#Título de la Dieta
|
6
|
+
attr_reader :titulo
|
7
|
+
#Porcentaje de ingesta diaria de la Dieta
|
8
|
+
attr_reader:porcentaje_ingesta
|
9
|
+
#Platos de la Dieta
|
10
|
+
attr_reader :platos
|
11
|
+
#Valor calórico de la Dieta
|
12
|
+
attr_reader:vct
|
13
|
+
#*Porcentajes* de proteínas, grasas e hidratos de carbono de la Dieta
|
14
|
+
attr_reader :porcentajes
|
15
|
+
#Constructor de la clase Dieta
|
16
|
+
def initialize(titulo, porcentaje_ingesta, platos, vct, porcentajes)
|
17
|
+
|
18
|
+
@titulo = titulo
|
19
|
+
@porcentaje_ingesta = porcentaje_ingesta
|
20
|
+
@platos = platos
|
21
|
+
@vct = vct
|
22
|
+
@porcentajes = porcentajes
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
#Método para saber si dos dietas son iguales ( se especifica explícitamente en vez de usar el <=> )
|
27
|
+
def == (other)
|
28
|
+
vct == other.vct && porcentajes==other.porcentajes
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
#Método que es necesario definir para poder utilizar el módulo Comparable
|
33
|
+
def <=> (other)
|
34
|
+
|
35
|
+
vct <=> other.vct
|
36
|
+
end
|
37
|
+
|
38
|
+
#Método para imprimir la Dieta
|
39
|
+
def to_s
|
40
|
+
title = "#{@titulo} ( #{@porcentaje_ingesta} )\n "
|
41
|
+
for i in 0..@platos.size-1
|
42
|
+
title +="- #{@platos[i][0]}, #{@platos[i][1]}, #{@platos[i][2]} \n"
|
43
|
+
end
|
44
|
+
title += "V.C.T. |% #{@vct} kcal | #{@porcentajes[0]}% - #{@porcentajes[1]}% - #{@porcentajes[2]}%"
|
45
|
+
end
|
46
|
+
|
47
|
+
#Método que devuelve el título de la Dieta
|
48
|
+
def get_titulo
|
49
|
+
@titulo
|
50
|
+
end
|
51
|
+
|
52
|
+
#Método que devuelve la descripción de uno de los platos
|
53
|
+
def get_desc_plato(i)
|
54
|
+
"#{@platos[i][0]}, #{@platos[i][1]}, #{@platos[i][2]} "
|
55
|
+
end
|
56
|
+
|
57
|
+
#Método que devuelve la ingesta diaria de la Dieta
|
58
|
+
def get_ingesta_diaria
|
59
|
+
@porcentaje_ingesta
|
60
|
+
end
|
61
|
+
#Método que devuelve un plato de una dieta
|
62
|
+
def get_plato(i)
|
63
|
+
@platos[i][0]
|
64
|
+
end
|
65
|
+
|
66
|
+
#Método que devuelve los platos de la dieta
|
67
|
+
def get_platos
|
68
|
+
@platos
|
69
|
+
end
|
70
|
+
|
71
|
+
#Método que devuelve el VCT
|
72
|
+
def get_vct
|
73
|
+
@vct
|
74
|
+
end
|
75
|
+
|
76
|
+
#Método que devuelve el porcentaje de proteínas de la dieta
|
77
|
+
def get_proteinas
|
78
|
+
@porcentajes[0]
|
79
|
+
end
|
80
|
+
|
81
|
+
#Método que devuelve el porcentaje de grasas de la dieta
|
82
|
+
def get_grasas
|
83
|
+
@porcentajes[1]
|
84
|
+
end
|
85
|
+
|
86
|
+
#Método que devuelve el porcentaje de hidratos de la
|
87
|
+
def get_hidratos
|
88
|
+
@porcentajes[2]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
#Clase Menu_Edad, que hereda de la clase Dieta
|
94
|
+
class Menu_Edad < Dieta
|
95
|
+
#Atributo para almacenar el rango de edades para consumir la Dieta
|
96
|
+
attr_reader :edad
|
97
|
+
#Constructor de la clase Menu_Edad
|
98
|
+
def initialize(edad, dieta)
|
99
|
+
@edad = edad
|
100
|
+
super(dieta.titulo,dieta. porcentaje_ingesta,dieta.platos, dieta.vct,dieta.porcentajes)
|
101
|
+
|
102
|
+
end
|
103
|
+
#Método que imprime la dieta más la edad para consumirla
|
104
|
+
def to_s
|
105
|
+
|
106
|
+
title = super.to_s + "\nEdad:#{@edad}"
|
107
|
+
end
|
108
|
+
|
109
|
+
|
110
|
+
end
|
111
|
+
|
112
|
+
#Clase Menu_Alimentos, que hereda de la clase Dieta
|
113
|
+
class Menu_Alimentos < Dieta
|
114
|
+
#El atributo alimentos representa el grupo de alimentos de la Dieta
|
115
|
+
attr_reader :alimentos
|
116
|
+
#Constructor de la clase Menu_Alimentos
|
117
|
+
def initialize(alimentos, dieta)
|
118
|
+
@alimentos= alimentos
|
119
|
+
super(dieta.titulo,dieta. porcentaje_ingesta,dieta.platos, dieta.vct,dieta.porcentajes)
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
#Método que imprime la dieta más el grupo de alimentos de la misma
|
124
|
+
def to_s
|
125
|
+
|
126
|
+
title = super.to_s + "\nGrupo de alimentos:#{@alimentos}"
|
127
|
+
end
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
|
@@ -0,0 +1,188 @@
|
|
1
|
+
#Clase Dieta
|
2
|
+
class DietaDSL
|
3
|
+
#Se incluye el módulo Comparable para que la clase Lista se convierta en Comparable
|
4
|
+
include Comparable
|
5
|
+
#Título de la Dieta
|
6
|
+
attr_reader :titulo
|
7
|
+
#Porcentaje de ingesta diaria de la Dieta
|
8
|
+
attr_reader:porcentaje_ingesta
|
9
|
+
#Platos de la Dieta
|
10
|
+
attr_reader :platos
|
11
|
+
#Valor calórico de la Dieta
|
12
|
+
attr_reader:vct
|
13
|
+
#*Porcentajes* de proteínas, grasas e hidratos de carbono de la Dieta
|
14
|
+
attr_reader :porcentajes
|
15
|
+
#Constructor de la clase Dieta
|
16
|
+
attr_reader :nombre
|
17
|
+
def initialize(nombre,&block)
|
18
|
+
@nombre = nombre
|
19
|
+
@titulo = ""
|
20
|
+
@porcentaje_ingesta = ""
|
21
|
+
@platos = []
|
22
|
+
@vct = 0
|
23
|
+
@porcentajes = []
|
24
|
+
if block_given?
|
25
|
+
if block.arity == 1
|
26
|
+
yield self
|
27
|
+
else
|
28
|
+
instance_eval(&block)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
#Método para saber si dos dietas son iguales ( se especifica explícitamente en vez de usar el <=> )
|
35
|
+
def == (other)
|
36
|
+
vct == other.vct && porcentajes==other.porcentajes
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
#Método que es necesario definir para poder utilizar el módulo Comparable
|
41
|
+
def <=> (other)
|
42
|
+
|
43
|
+
vct <=> other.vct
|
44
|
+
end
|
45
|
+
|
46
|
+
#Método para imprimir la Dieta
|
47
|
+
def to_s
|
48
|
+
title = "#{@titulo} ( #{@porcentaje_ingesta} )\n "
|
49
|
+
for i in 0..@platos.size-1
|
50
|
+
title +="- #{@platos[i][0]}, #{@platos[i][1]}, #{@platos[i][2]} \n"
|
51
|
+
end
|
52
|
+
title += "V.C.T. |% #{@vct} kcal | #{@porcentajes[0]}% - #{@porcentajes[1]}% - #{@porcentajes[2]}%"
|
53
|
+
end
|
54
|
+
|
55
|
+
#Método que devuelve el título de la Dieta
|
56
|
+
def get_titulo
|
57
|
+
@titulo
|
58
|
+
end
|
59
|
+
|
60
|
+
#Método que devuelve la descripción de uno de los platos
|
61
|
+
def get_desc_plato(i)
|
62
|
+
"#{@platos[i][0]}, #{@platos[i][1]}, #{@platos[i][2]} "
|
63
|
+
end
|
64
|
+
|
65
|
+
#Método que devuelve la ingesta diaria de la Dieta
|
66
|
+
def get_ingesta_diaria
|
67
|
+
@porcentaje_ingesta
|
68
|
+
end
|
69
|
+
#Método que devuelve un plato de una dieta
|
70
|
+
def get_plato(i)
|
71
|
+
@platos[i][0]
|
72
|
+
end
|
73
|
+
|
74
|
+
#Método que devuelve los platos de la dieta
|
75
|
+
def get_platos
|
76
|
+
@platos
|
77
|
+
end
|
78
|
+
|
79
|
+
#Método que devuelve el VCT
|
80
|
+
def get_vct
|
81
|
+
@vct
|
82
|
+
end
|
83
|
+
|
84
|
+
#Método que devuelve el porcentaje de proteínas de la dieta
|
85
|
+
def get_proteinas
|
86
|
+
@porcentajes[0]
|
87
|
+
end
|
88
|
+
|
89
|
+
#Método que devuelve el porcentaje de grasas de la dieta
|
90
|
+
def get_grasas
|
91
|
+
@porcentajes[1]
|
92
|
+
end
|
93
|
+
|
94
|
+
#Método que devuelve el porcentaje de hidratos de la
|
95
|
+
def get_hidratos
|
96
|
+
@porcentajes[2]
|
97
|
+
end
|
98
|
+
|
99
|
+
def titulo_(name)
|
100
|
+
@titulo = name
|
101
|
+
end
|
102
|
+
|
103
|
+
def ingesta_(opciones={})
|
104
|
+
ingest = ""
|
105
|
+
ingest << "#{opciones[:min]}" if opciones[:min]
|
106
|
+
ingest<<"-#{opciones[:max]} %" if opciones[:max]
|
107
|
+
@porcentaje_ingesta = ingest
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
def plato_(opciones={})
|
112
|
+
grams= ""
|
113
|
+
descripcion=""
|
114
|
+
porcion=""
|
115
|
+
grams= "#{opciones[:gramos]} g" if opciones[:gramos]
|
116
|
+
descripcion = opciones[:descripcion] if opciones[:descripcion]
|
117
|
+
porcion = opciones[:porcion] if opciones[:porcion]
|
118
|
+
|
119
|
+
@platos.push([descripcion,porcion,grams])
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
def porcentajes_(opciones={})
|
124
|
+
@vct = opciones[:vct] if opciones[:vct]
|
125
|
+
proteinas = ""
|
126
|
+
grasas = ""
|
127
|
+
hidratos=""
|
128
|
+
proteinas = opciones[:proteinas] if opciones[:proteinas]
|
129
|
+
grasas = opciones[:grasas] if opciones[:grasas]
|
130
|
+
hidratos = opciones[:hidratos] if opciones[:hidratos]
|
131
|
+
@porcentajes.push(proteinas)
|
132
|
+
@porcentajes.push(grasas)
|
133
|
+
@porcentajes.push(hidratos)
|
134
|
+
|
135
|
+
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
|
140
|
+
#Clase Menu_Edad, que hereda de la clase Dieta
|
141
|
+
class Menu_EdadDSL < DietaDSL
|
142
|
+
#Atributo para almacenar el rango de edades para consumir la Dieta
|
143
|
+
attr_reader :edad
|
144
|
+
#Constructor de la clase Menu_Edad
|
145
|
+
def initialize(edad, dieta)
|
146
|
+
@edad = edad
|
147
|
+
super(dieta.titulo,dieta. porcentaje_ingesta,dieta.platos, dieta.vct,dieta.porcentajes)
|
148
|
+
|
149
|
+
end
|
150
|
+
#Método que imprime la dieta más la edad para consumirla
|
151
|
+
def to_s
|
152
|
+
|
153
|
+
title = super.to_s + "\nEdad:#{@edad}"
|
154
|
+
end
|
155
|
+
|
156
|
+
|
157
|
+
end
|
158
|
+
|
159
|
+
#Clase Menu_Alimentos, que hereda de la clase Dieta
|
160
|
+
class Menu_AlimentosDSL < DietaDSL
|
161
|
+
#El atributo alimentos representa el grupo de alimentos de la Dieta
|
162
|
+
attr_reader :alimentos
|
163
|
+
#Constructor de la clase Menu_Alimentos
|
164
|
+
def initialize(alimentos, dieta)
|
165
|
+
@alimentos= alimentos
|
166
|
+
super(dieta.titulo,dieta. porcentaje_ingesta,dieta.platos, dieta.vct,dieta.porcentajes)
|
167
|
+
|
168
|
+
end
|
169
|
+
|
170
|
+
#Método que imprime la dieta más el grupo de alimentos de la misma
|
171
|
+
def to_s
|
172
|
+
|
173
|
+
title = super.to_s + "\nGrupo de alimentos:#{@alimentos}"
|
174
|
+
end
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
end
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
|