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,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
|
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: []
|