practica 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 (61) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +2 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile +6 -0
  5. data/Gemfile.lock +97 -0
  6. data/Guardfile +82 -0
  7. data/README.md +11 -0
  8. data/Rakefile +6 -0
  9. data/bin/.yardoc/checksums +0 -0
  10. data/bin/.yardoc/complete +0 -0
  11. data/bin/.yardoc/object_types +0 -0
  12. data/bin/.yardoc/objects/root.dat +0 -0
  13. data/bin/.yardoc/proxy_types +0 -0
  14. data/bin/console +14 -0
  15. data/bin/doc/_index.html +85 -0
  16. data/bin/doc/class_list.html +51 -0
  17. data/bin/doc/css/common.css +1 -0
  18. data/bin/doc/css/full_list.css +58 -0
  19. data/bin/doc/css/style.css +496 -0
  20. data/bin/doc/file_list.html +51 -0
  21. data/bin/doc/frames.html +17 -0
  22. data/bin/doc/index.html +85 -0
  23. data/bin/doc/js/app.js +303 -0
  24. data/bin/doc/js/full_list.js +216 -0
  25. data/bin/doc/js/jquery.js +4 -0
  26. data/bin/doc/method_list.html +51 -0
  27. data/bin/doc/top-level-namespace.html +100 -0
  28. data/bin/setup +8 -0
  29. data/doc/Alimento.html +1221 -0
  30. data/doc/Lista.html +1496 -0
  31. data/doc/Node.html +817 -0
  32. data/doc/Persona.html +362 -0
  33. data/doc/Plato.html +1651 -0
  34. data/doc/Plato_2.html +1280 -0
  35. data/doc/Practica.html +132 -0
  36. data/doc/_index.html +161 -0
  37. data/doc/class_list.html +51 -0
  38. data/doc/css/common.css +1 -0
  39. data/doc/css/full_list.css +58 -0
  40. data/doc/css/style.css +496 -0
  41. data/doc/file.README.html +81 -0
  42. data/doc/file_list.html +56 -0
  43. data/doc/frames.html +17 -0
  44. data/doc/index.html +81 -0
  45. data/doc/js/app.js +303 -0
  46. data/doc/js/full_list.js +216 -0
  47. data/doc/js/jquery.js +4 -0
  48. data/doc/method_list.html +667 -0
  49. data/doc/top-level-namespace.html +112 -0
  50. data/lib/practica.rb +10 -0
  51. data/lib/practica/lista.rb +189 -0
  52. data/lib/practica/menu.rb +42 -0
  53. data/lib/practica/nodo.rb +24 -0
  54. data/lib/practica/persona.rb +22 -0
  55. data/lib/practica/plato.rb +103 -0
  56. data/lib/practica/plato_herencia.rb +140 -0
  57. data/lib/practica/plato_herencia2.rb +44 -0
  58. data/lib/practica/practica6.rb +53 -0
  59. data/lib/practica/version.rb +4 -0
  60. data/practica.gemspec +46 -0
  61. metadata +215 -0
@@ -0,0 +1,140 @@
1
+ # Clase Plato_2 que hereda de Plato
2
+ class Plato_2 < Plato
3
+ attr_reader :gei, :terreno, :eficiencia
4
+ @Indice_huella = ->(huella){ #para obtener la huella segun el indice de la misma
5
+ if huella == 1 then
6
+ "Baja"
7
+ elsif huella == 2 then
8
+ "Regular"
9
+ else
10
+ "Alta"
11
+ end
12
+
13
+ }
14
+ def initialize (lista, cantidad,nombre) #constructor que recibe dos listas, de cantidad y de alientos, ademas del nombre del plato
15
+ @gei = @terreno = @eficiencia = 0
16
+ super(lista,cantidad,nombre) #instanciamos la clase padre con los parametros dados
17
+ self.calc_gei
18
+ self.calc_terreno
19
+ self.calc_eficiencia
20
+
21
+ #creamos diferentes metodos lambda
22
+ @Huella = ->{ #para calcular solamente el INDICE nutricional
23
+
24
+ (@Indice_energia.call + @Indice_Carbono.call)/2
25
+ }
26
+
27
+ @Indice_energia = -> { # Para calcular el indice de Energia
28
+ if @calorias<670 then
29
+ 1
30
+ elsif @calorias >= 670 && @calorias <= 830 then
31
+ 2
32
+ else
33
+ 3
34
+ end
35
+ }
36
+ @Indice_Carbono = -> { #para calcular el indice de Carbono
37
+ if @gei < 800 then
38
+ 1
39
+ elsif @gei >= 800 && @gei <= 1200 then
40
+
41
+ 2
42
+ else
43
+ 3
44
+ end
45
+ }
46
+ @Indice_huella = ->(huella){ #para obtener la huella segun el indice de la misma
47
+ if huella == 1 then
48
+ "Baja"
49
+ elsif huella == 2 then
50
+ "Regular"
51
+ else
52
+ "Alta"
53
+ end
54
+
55
+ }
56
+
57
+
58
+ end
59
+
60
+ def calc_gei #calculamos el GEI total del plato
61
+ contador=0
62
+ while( @lista[contador] != nil && @cantidad[contador] != nil) do
63
+
64
+ @gei=@gei + calcular_equivalente(@lista[contador].get_valor.gei , @cantidad[contador].get_valor)
65
+ contador = contador +1
66
+ end
67
+
68
+ end
69
+ def get_huella #metodo que llama al lambda para obtener el indice de la huella nutricional
70
+
71
+ @Huella.call
72
+ end
73
+ def Calc_huella_nutri #metodo que llama a lambda para obtener la huella nutricional
74
+
75
+ return @Indice_huella.call((@Indice_energia.call + @Indice_Carbono.call)/2)
76
+ end
77
+ def self.huella(valor)
78
+ @Indice_huella.call(valor)
79
+ end
80
+
81
+ def calc_terreno # metodo que obtiene el terreno total del plato
82
+ contador=0
83
+ while( @lista[contador] != nil && @cantidad[contador] != nil) do
84
+
85
+ @terreno=@terreno + calcular_equivalente(@lista[contador].get_valor.terreno , @cantidad[contador].get_valor)
86
+ contador = contador +1
87
+ end
88
+
89
+ end
90
+
91
+ def calc_eficiencia # metodo que calcula la eficiencia energetica del plato
92
+ @eficiencia= ((@calorias / @gei )+ @terreno).round(2)
93
+ end
94
+
95
+ def to_s #metodo que da formato a al plato en un string
96
+ s =""
97
+ s << super.to_s # llamamos al to_s de la clase super
98
+ s = s+",#{@gei},#{@terreno}"
99
+ end
100
+ def == (other) #operador de comparacion
101
+ if other.instance_of? Plato_2 #en caso de que el objeto a comparar sea una instancia de Plato_2
102
+
103
+ self.to_s == other.to_s #comparamos ambos to_s
104
+ elsif other.is_a? Plato #en caso de que sea una instancia de Plato
105
+ s = ""
106
+ s<< super.to_s
107
+
108
+ return (s == other.to_s) #comnparamos segun el to_s de la clase super
109
+
110
+ else
111
+
112
+ false
113
+ end
114
+
115
+ end
116
+
117
+ def +(other)
118
+
119
+ @aux_list=lista
120
+ @aux_list.insertar_list(other.lista)
121
+
122
+ @aux_cantidad=cantidad
123
+ @aux_cantidad.insertar_list(other.cantidad)
124
+
125
+ @Nuevo_plato= Plato_2.new(@aux_list,@aux_cantidad, self.nombre)
126
+ end
127
+
128
+ def <=> (other) # operador <=>
129
+
130
+ if other.instance_of? Plato_2 # para una instancia de Plato_2
131
+
132
+ self.get_huella <=> other.get_huella # lo hacemos segun la huella nutricional
133
+ elsif other.is_a? Plato # en caso de que sea una instancia de la clase Plato
134
+ self.calorias <=> other.calorias #lo hacemos segun las calorias totales de ambos objetos
135
+ else
136
+ return nil
137
+ end
138
+
139
+ end
140
+ end
@@ -0,0 +1,44 @@
1
+
2
+ class Plato_3 < Plato_2
3
+ attr_reader :lista_ ,:cantidad_, :nombre_
4
+ def initialize(nombre,&block)
5
+
6
+ if block_given?
7
+ if block.arity == 1
8
+ yield
9
+ else
10
+ instance_eval(&block)
11
+ end
12
+ end
13
+ super(@lista_,@cantidad_,@nombre_)
14
+
15
+ end
16
+
17
+ def nombre_plato(cadena)
18
+ @nombre_=cadena[:cadena]
19
+ end
20
+
21
+ def alimento_nuevo(comida={})
22
+ if(@lista_==nil && @cantidad_ == nil) then
23
+ alimento = Alimento.new(comida[:nombre],comida[:proteina],comida[:carbohidrato],comida[:lipido],comida[:gei],comida[:terreno])
24
+ @lista_= Lista.new(alimento)
25
+ @cantidad_ = Lista.new(comida[:gramos])
26
+ else
27
+ alimento = Alimento.new(comida[:nombre],comida[:proteina],comida[:carbohidrato],comida[:lipido],comida[:gei],comida[:terreno])
28
+ @lista_.insertar_back(alimento)
29
+ @cantidad_.insertar_back(comida[:gramos])
30
+ end
31
+ end
32
+ def to_s
33
+
34
+ @nombre_ = "#{@nombre_}"
35
+ contador =0
36
+
37
+ while (@lista_[contador] != nil && @cantidad_[contador] != nil) do
38
+ @nombre_ = @nombre_ + ",#{@lista_[contador].get_valor.nombre},#{@cantidad_[contador].get_valor}"
39
+ contador = contador + 1
40
+ end
41
+ @nombre_=@nombre_ + ",#{@proteinas.round(2)},#{@carbohidratos.round(2)},#{@lipidos.round(2)},#{@gei.round(2)},#{@terreno.round(2)}"
42
+ return @nombre_
43
+ end
44
+ end
@@ -0,0 +1,53 @@
1
+ # La clase Alimento se usar para la definicion de los diferentes alimentos y sus propiedades
2
+ class Alimento
3
+ attr_reader :nombre, :proteinas, :carbohidratos, :lipidos, :gei, :terreno
4
+ include Comparable
5
+ def initialize(nombre,proteinas,carbohidratos,lipidos,gei,terreno) # Constructor que recibe como parametros el nombre,proteinas,carbohidratos,lipidos, gei y terreno del alimento
6
+
7
+ @nombre=nombre.to_s
8
+ @proteinas=proteinas.to_f
9
+ @carbohidratos=carbohidratos.to_f
10
+ @lipidos=lipidos.to_f
11
+ @gei=gei.to_f
12
+ @terreno=terreno.to_f
13
+ end
14
+
15
+ def get_name # Getter del atributo @nombre
16
+ return @nombre
17
+ end
18
+
19
+ def get_GEI # Getter del atrito @gei
20
+ return @gei
21
+ end
22
+
23
+ def get_terreno # Getter del atributo @terreno
24
+ return @terreno
25
+ end
26
+ def to_s # Metodo que devuelve el objeto formateado en string
27
+ return "#{@nombre},#{@proteinas},#{@carbohidratos},#{@lipidos},#{@gei},#{@terreno}"
28
+ end
29
+ def get_alimento # Metodo que devuelve el objeto en formato vector
30
+ comida = [@proteinas,@carbohidratos,@lipidos,@gei,@terreno]
31
+ return comida
32
+ end
33
+ def get_valE # Metodo que devuelve el equivalente energetico del aliemnto (kcal)
34
+ return(@proteinas*4 + @carbohidratos*9 + @lipidos*4).round(2)
35
+ end
36
+ def == (other) # Operador de comparacion
37
+ if other.instance_of? Alimento # verificamos que el otro objeto sea una instancia de Alimento
38
+
39
+ @nombre == other.nombre && @proteinas == other.proteinas && @carbohidratos==other.carbohidratos && @lipidos==other.lipidos && @gei==other.gei && @terreno==other.terreno
40
+ #retornamos true si todos y cada uno de los atributos son iguales
41
+ elsif #retornamos false en caso de que al menos uno sea diferente
42
+
43
+ false
44
+ end
45
+ end
46
+
47
+ def <=> (other) # Operador <=> en funcion del valor energetico
48
+ return nil unless other.instance_of? Alimento # retornamos nil en caso de que el objeto a comparar no sea una instancia de Alimento
49
+ get_valE <=> other.get_valE
50
+ end
51
+
52
+ end
53
+
@@ -0,0 +1,4 @@
1
+ # fichero en el que ponemos la version del programa
2
+ module Practica
3
+ VERSION = "0.1.0"
4
+ end
@@ -0,0 +1,46 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "practica/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "practica"
8
+ spec.version = Practica::VERSION
9
+ spec.authors = ["Enrique Manuel Pedroza Castillo"]
10
+ spec.email = ["predatoren1@gmail.com"]
11
+ spec.license = 'MIT'
12
+ spec.summary = %q{Practica 6 de LPP}
13
+ spec.homepage = "http://rubygems.org/gems/practica"
14
+
15
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
16
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
17
+ # if spec.respond_to?(:metadata)
18
+ # spec.metadata["allowed_push_host"] = "http://rubygems.org"
19
+
20
+ # spec.metadata["homepage_uri"] = spec.homepage
21
+ # spec.metadata["source_code_uri"] = "https://github.com/ULL-ESIT-LPP-1920/tdd-kenshinsamue.git"
22
+
23
+ # else
24
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
25
+ # end
26
+
27
+ # Specify which files should be added to the gem when it is released.
28
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
29
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
30
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
31
+ end
32
+ spec.bindir = "exe"
33
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
+ spec.require_paths = ["lib"]
35
+
36
+
37
+ spec.add_development_dependency "bundler", "~> 1.17"
38
+ spec.add_development_dependency "rake", "~> 10.0"
39
+ spec.add_development_dependency "rspec", "~> 3.0"
40
+ spec.add_development_dependency "guard"
41
+ spec.add_development_dependency "guard-rspec"
42
+ spec.add_development_dependency "guard-bundler"
43
+ spec.add_development_dependency "yard", "~> 0.9.20"
44
+ spec.add_development_dependency 'coveralls'
45
+ end
46
+
metadata ADDED
@@ -0,0 +1,215 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: practica
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Enrique Manuel Pedroza Castillo
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-01-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.17'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.17'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: guard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard-bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.9.20
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.9.20
111
+ - !ruby/object:Gem::Dependency
112
+ name: coveralls
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description:
126
+ email:
127
+ - predatoren1@gmail.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".coveralls.yml"
133
+ - ".travis.yml"
134
+ - Gemfile
135
+ - Gemfile.lock
136
+ - Guardfile
137
+ - README.md
138
+ - Rakefile
139
+ - bin/.yardoc/checksums
140
+ - bin/.yardoc/complete
141
+ - bin/.yardoc/object_types
142
+ - bin/.yardoc/objects/root.dat
143
+ - bin/.yardoc/proxy_types
144
+ - bin/console
145
+ - bin/doc/_index.html
146
+ - bin/doc/class_list.html
147
+ - bin/doc/css/common.css
148
+ - bin/doc/css/full_list.css
149
+ - bin/doc/css/style.css
150
+ - bin/doc/file_list.html
151
+ - bin/doc/frames.html
152
+ - bin/doc/index.html
153
+ - bin/doc/js/app.js
154
+ - bin/doc/js/full_list.js
155
+ - bin/doc/js/jquery.js
156
+ - bin/doc/method_list.html
157
+ - bin/doc/top-level-namespace.html
158
+ - bin/setup
159
+ - doc/Alimento.html
160
+ - doc/Lista.html
161
+ - doc/Node.html
162
+ - doc/Persona.html
163
+ - doc/Plato.html
164
+ - doc/Plato_2.html
165
+ - doc/Practica.html
166
+ - doc/_index.html
167
+ - doc/class_list.html
168
+ - doc/css/common.css
169
+ - doc/css/full_list.css
170
+ - doc/css/style.css
171
+ - doc/file.README.html
172
+ - doc/file_list.html
173
+ - doc/frames.html
174
+ - doc/index.html
175
+ - doc/js/app.js
176
+ - doc/js/full_list.js
177
+ - doc/js/jquery.js
178
+ - doc/method_list.html
179
+ - doc/top-level-namespace.html
180
+ - lib/practica.rb
181
+ - lib/practica/lista.rb
182
+ - lib/practica/menu.rb
183
+ - lib/practica/nodo.rb
184
+ - lib/practica/persona.rb
185
+ - lib/practica/plato.rb
186
+ - lib/practica/plato_herencia.rb
187
+ - lib/practica/plato_herencia2.rb
188
+ - lib/practica/practica6.rb
189
+ - lib/practica/version.rb
190
+ - practica.gemspec
191
+ homepage: http://rubygems.org/gems/practica
192
+ licenses:
193
+ - MIT
194
+ metadata: {}
195
+ post_install_message:
196
+ rdoc_options: []
197
+ require_paths:
198
+ - lib
199
+ required_ruby_version: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ required_rubygems_version: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ requirements: []
210
+ rubyforge_project:
211
+ rubygems_version: 2.7.6.2
212
+ signing_key:
213
+ specification_version: 4
214
+ summary: Practica 6 de LPP
215
+ test_files: []