alimento_alu0101050218 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,56 @@
1
+ module Alimento
2
+
3
+ class PlatoDSL
4
+
5
+ require "alimento"
6
+
7
+ attr_reader :nombre, :descripcion_plato, :componentes, :gramos, :alimentos, :platito
8
+
9
+ def initialize(nombre, &block)
10
+ @nombre = nombre
11
+ @componentes = []
12
+ @gramos = []
13
+ @platito
14
+ @list
15
+ if block_given?
16
+ if block.arity == 1
17
+ yield self
18
+ else
19
+ instance_eval(&block)
20
+ end
21
+ end
22
+ end
23
+
24
+ def descripcion(descr)
25
+ @descripcion_plato = descr
26
+ end
27
+
28
+ def alimento(options = {})
29
+ @componentes << options[:alimento]
30
+ @gramos << options[:gramos] if options[:gramos]
31
+ end
32
+
33
+ def platillo
34
+ @list = List.new(@componentes[0])
35
+ for i in (1..@componentes.length - 1)
36
+ @list.insert_head(@componentes[i])
37
+ end
38
+ @platito = PlatoAmbiental.new(@nombre, @list, @gramos)
39
+ end
40
+
41
+ def to_s
42
+ if @platillo == nil
43
+ platillo()
44
+ end
45
+ i = 0
46
+ aux = "Nombre: #{@nombre}"
47
+ aux += "\nComponentes: "
48
+ @componentes.each { |val|
49
+ aux += "\n\t#{val.nombre}"
50
+ aux += "\n\tGramos: #{@gramos[i]}"
51
+ i += 1
52
+ }
53
+ aux
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,100 @@
1
+ # @author Hernan Daniel Gonzalez Guanipa
2
+ module Alimento
3
+
4
+ class PlatoAmbiental < Plato
5
+
6
+ include Comparable
7
+ include Enumerable
8
+
9
+ attr_reader :emisiones, :terreno
10
+
11
+
12
+ # @note Constructor de la clase que llama al de Plato y al propio
13
+ # @param nombre Identificador del plato
14
+ # @param lista Conjunto de alimentos del plato
15
+ # @param cantidades Vector de cantidades de cada alimento
16
+ def initialize(nombre, lista, cantidades)
17
+ super(nombre, lista, cantidades)
18
+ @emisiones = emisiones_total
19
+ @terreno = terreno_total
20
+ end
21
+
22
+ # @note Comparador de las emisiones ambientales totales de cada plato
23
+ # @param otro Objeto del mismo tipo con el cual comparar
24
+ # @return [PlatoAmbiental] Plato con mayores emisiones
25
+ def <=>(otro)
26
+ emisiones_total <=> otro.emisiones_total
27
+ end
28
+
29
+
30
+ # @note Calculo de las emisiones de gases del plato
31
+ # @return [Float] Emisiones totales del plato
32
+ def emisiones_total
33
+ total_emisiones = 0
34
+ i = 0
35
+ @lista.each{|iter|
36
+ total_emisiones += (iter.value.gei * @cantidades[i]/100)
37
+ i += 1
38
+ }
39
+ return total_emisiones.round(1)
40
+ end
41
+
42
+
43
+ # @note Calculo del terreno ocupado por los alimentos del plato
44
+ # @return [Float] Terreno total de los alimentos del plato
45
+ def terreno_total
46
+ ter_array = @lista.collect{|iter| iter.value.terreno}
47
+ total_terreno = []
48
+ i = 0
49
+ while i < @cantidades.length do
50
+ total_terreno.push(ter_array[i] * (@cantidades[i]/100))
51
+ i +=1
52
+ end
53
+ return (total_terreno.sum).round(1)
54
+ end
55
+
56
+
57
+
58
+ # @note Calculo del indice de huella nutricional del plato
59
+ # @return [Integer] Indice resultante
60
+ def huella_energia
61
+ if VCT() < 670
62
+ return 1
63
+ elsif (670..830) === VCT()
64
+ return 2
65
+ else
66
+ return 3
67
+ end
68
+ end
69
+
70
+
71
+ # @note Calculo de la huella de carbono total del plato
72
+ # @return [Integer] Indice segun la huella de carbono del plato
73
+ def huella_carbono
74
+ emi_total_dia = ((emisiones_total()*1000)/365)
75
+ if emi_total_dia < 800
76
+ return 1
77
+ elsif (800..1200) === emi_total_dia
78
+ return 2
79
+ else
80
+ return 3
81
+ end
82
+ end
83
+
84
+
85
+ # @note Calculo del indice medio entre todos los del plato
86
+ # @return [Integer] Indice de media de los demas
87
+ def huella_nutricional
88
+ return ((huella_carbono + huella_energia) / 2).floor
89
+ end
90
+
91
+
92
+ # @note Formateo del plato
93
+ # @return [String] Datos del plato que son el nombre y energia total
94
+ def to_s
95
+ string = "La eficiencia energetica de '#{nombre}' es: #{VCT()}"
96
+ return string
97
+ end
98
+ end
99
+
100
+ end
@@ -0,0 +1,3 @@
1
+ module Alimento
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,186 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alimento_alu0101050218
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Hernan Gonzalez
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: '2.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '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-bundler
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-rspec
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: coveralls
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Write a longer description or delete this line.
112
+ email:
113
+ - alu0101050218@ull.edu.es
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - ".rspec"
120
+ - ".travis.yml"
121
+ - CODE_OF_CONDUCT.md
122
+ - Gemfile
123
+ - Gemfile.lock
124
+ - Guardfile
125
+ - LICENSE.txt
126
+ - README.md
127
+ - Rakefile
128
+ - alimento.gemspec
129
+ - bin/console
130
+ - bin/setup
131
+ - docs/Alimento.html
132
+ - docs/Alimento/Alimento.html
133
+ - docs/Alimento/Error.html
134
+ - docs/Alimento/List.html
135
+ - docs/Alimento/Node.html
136
+ - docs/Alimento/Plato.html
137
+ - docs/Alimento/PlatoAmbiental.html
138
+ - docs/Array.html
139
+ - docs/_index.html
140
+ - docs/class_list.html
141
+ - docs/css/common.css
142
+ - docs/css/full_list.css
143
+ - docs/css/style.css
144
+ - docs/file.README.html
145
+ - docs/file_list.html
146
+ - docs/frames.html
147
+ - docs/index.html
148
+ - docs/js/app.js
149
+ - docs/js/full_list.js
150
+ - docs/js/jquery.js
151
+ - docs/method_list.html
152
+ - docs/top-level-namespace.html
153
+ - lib/alimento.rb
154
+ - lib/alimento/Array.rb
155
+ - lib/alimento/alimento.rb
156
+ - lib/alimento/list.rb
157
+ - lib/alimento/menuDSL.rb
158
+ - lib/alimento/plato.rb
159
+ - lib/alimento/platoDSL.rb
160
+ - lib/alimento/platoambiental.rb
161
+ - lib/alimento/version.rb
162
+ homepage: ''
163
+ licenses:
164
+ - MIT
165
+ metadata: {}
166
+ post_install_message:
167
+ rdoc_options: []
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ required_rubygems_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ requirements: []
181
+ rubyforge_project:
182
+ rubygems_version: 2.7.6
183
+ signing_key:
184
+ specification_version: 4
185
+ summary: Write a short summary, because RubyGems requires one.
186
+ test_files: []