alimento0100886306 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.coveralls.yml +2 -0
- data/.gitignore +12 -0
- data/.rake_tasks~ +7 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +6 -0
- data/Guardfile +82 -0
- data/LICENSE.txt +21 -0
- data/README.md +39 -0
- data/Rakefile +6 -0
- data/alimento.gemspec +41 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/docs/Alimento.html +127 -0
- data/docs/Alimento/Alimento.html +679 -0
- data/docs/Alimento/Grupo.html +282 -0
- data/docs/Lista.html +885 -0
- data/docs/Nodo.html +398 -0
- data/docs/_index.html +155 -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 +492 -0
- data/docs/file.README.html +122 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +122 -0
- data/docs/js/app.js +248 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +235 -0
- data/docs/top-level-namespace.html +112 -0
- data/lib/.alimento.rb.swo +0 -0
- data/lib/.alimento.rb.swp +0 -0
- data/lib/alimento.rb +124 -0
- data/lib/alimento/IG_fun.rb +15 -0
- data/lib/alimento/alimento.rb +35 -0
- data/lib/alimento/lista.rb +115 -0
- data/lib/alimento/ordenar.rb +28 -0
- data/lib/alimento/plato.rb +70 -0
- data/lib/alimento/version.rb +3 -0
- data//303/247 +82 -0
- metadata +185 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>
|
7
|
+
Top Level Namespace
|
8
|
+
|
9
|
+
— Documentation by YARD 0.9.9
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
pathId = "";
|
19
|
+
relpath = '';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
|
23
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
24
|
+
|
25
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
26
|
+
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<div class="nav_wrap">
|
31
|
+
<iframe id="nav" src="class_list.html?1"></iframe>
|
32
|
+
<div id="resizer"></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="main" tabindex="-1">
|
36
|
+
<div id="header">
|
37
|
+
<div id="menu">
|
38
|
+
|
39
|
+
<a href="_index.html">Index</a> »
|
40
|
+
|
41
|
+
|
42
|
+
<span class="title">Top Level Namespace</span>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div id="search">
|
47
|
+
|
48
|
+
<a class="full_list_link" id="class_list_link"
|
49
|
+
href="class_list.html">
|
50
|
+
|
51
|
+
<svg width="24" height="24">
|
52
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
53
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
54
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
55
|
+
</svg>
|
56
|
+
</a>
|
57
|
+
|
58
|
+
</div>
|
59
|
+
<div class="clear"></div>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<div id="content"><h1>Top Level Namespace
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
</h1>
|
67
|
+
<div class="box_info">
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
</div>
|
80
|
+
|
81
|
+
<h2>Defined Under Namespace</h2>
|
82
|
+
<p class="children">
|
83
|
+
|
84
|
+
|
85
|
+
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Alimento.html" title="Alimento (module)">Alimento</a></span>
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Lista.html" title="Lista (class)">Lista</a></span>, <span class='object_link'><a href="Nodo.html" title="Nodo (class)">Nodo</a></span>
|
90
|
+
|
91
|
+
|
92
|
+
</p>
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
</div>
|
103
|
+
|
104
|
+
<div id="footer">
|
105
|
+
Generated on Tue Nov 14 14:50:59 2017 by
|
106
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
107
|
+
0.9.9 (ruby-2.3.0).
|
108
|
+
</div>
|
109
|
+
|
110
|
+
</div>
|
111
|
+
</body>
|
112
|
+
</html>
|
Binary file
|
Binary file
|
data/lib/alimento.rb
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
require "alimento/version"
|
2
|
+
require "alimento/lista"
|
3
|
+
require "alimento/IG_fun"
|
4
|
+
require "alimento/ordenar"
|
5
|
+
require "benchmark"
|
6
|
+
|
7
|
+
module Alimento
|
8
|
+
class Alimento
|
9
|
+
attr_reader :nombre, :prt, :gluc, :lip
|
10
|
+
include Comparable
|
11
|
+
|
12
|
+
def <=>(another)
|
13
|
+
kcal <=> another.kcal
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(nombre,prt,gluc,lip)
|
17
|
+
@nombre=nombre
|
18
|
+
@prt=prt
|
19
|
+
@gluc=gluc
|
20
|
+
@lip=lip
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_s()
|
24
|
+
"#{@nombre} prt=#{@prt}g gluc=#{@gluc}g lip=#{@lip}g"
|
25
|
+
end
|
26
|
+
|
27
|
+
def kcal()
|
28
|
+
@prt*4+@gluc*4+@lip*9
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class Grupoal < Alimento
|
33
|
+
|
34
|
+
def initialize(grupo,nombre,prt,gluc,lip)
|
35
|
+
super(nombre,prt,gluc,lip)
|
36
|
+
@grupo=grupo
|
37
|
+
end
|
38
|
+
def to_s
|
39
|
+
puts @grupo+"\n\t"+super.to_s
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class Plato
|
44
|
+
@@talimentos=[
|
45
|
+
Alimento.new("Huevo", 14.1, 0.0, 19.5),
|
46
|
+
Alimento.new("Leche", 3.3, 4.8, 3.2),
|
47
|
+
Alimento.new("Mantequilla" , 0.7, 0.0, 83.2),
|
48
|
+
Alimento.new("Yogurt", 3.8, 4.9, 3.8),
|
49
|
+
Alimento.new("Cerdo", 21.5, 0.0, 6.3),
|
50
|
+
Alimento.new("Ternera", 21.1, 0.0, 3.1),
|
51
|
+
Alimento.new("Pollo", 20.6, 0.0, 5.6),
|
52
|
+
Alimento.new("Bacalao", 17.7, 0.0, 0.4),
|
53
|
+
Alimento.new("Atun", 21.5, 0.0, 15.5),
|
54
|
+
Alimento.new("Salmon", 19.9, 0.0, 13.6),
|
55
|
+
Alimento.new("Aceite de oliva", 0.0, 0.2, 99.6),
|
56
|
+
Alimento.new("Chocolate", 5.3, 47.0, 30.0),
|
57
|
+
Alimento.new("Azucar", 0.0, 99.8, 0.0),
|
58
|
+
Alimento.new("Arroz", 6.8, 77.7, 0.6),
|
59
|
+
Alimento.new("Lentejas", 23.5, 52.0, 1.4),
|
60
|
+
Alimento.new("Papas", 2.0, 15.4, 0.1),
|
61
|
+
Alimento.new("Tomate", 1.0, 3.5, 0.2),
|
62
|
+
Alimento.new("Cebolla", 1.3, 5.8, 0.3),
|
63
|
+
Alimento.new("Calabaza", 1.1, 4.8, 0.1),
|
64
|
+
Alimento.new("Manzana", 0.3, 12.4, 0.4),
|
65
|
+
Alimento.new("Platano", 1.2, 21.4, 0.2),
|
66
|
+
Alimento.new("Pera", 0.5, 12.7, 0.3)
|
67
|
+
]
|
68
|
+
@@tmediciones=[
|
69
|
+
["pieza",40],
|
70
|
+
["taza",30],
|
71
|
+
["cucharon",10],
|
72
|
+
["cucharada",5],
|
73
|
+
["pizca",2],
|
74
|
+
["cucharilla",3]
|
75
|
+
]
|
76
|
+
|
77
|
+
def initialize(nombre, &bloque)
|
78
|
+
@nombre=nombre
|
79
|
+
@alimentos=[]
|
80
|
+
@kcal=0
|
81
|
+
if block_given?
|
82
|
+
if bloque.arity == 1
|
83
|
+
yield self
|
84
|
+
else
|
85
|
+
instance_eval(&bloque)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def to_s
|
91
|
+
output = @nombre
|
92
|
+
output << "\n#{'=' * @nombre.size}\nComposición nutricional:\n"
|
93
|
+
@alimentos.each do |alimento|
|
94
|
+
output << alimento[0].to_s << " kcal=#{alimento[1]}\n"
|
95
|
+
end
|
96
|
+
output << "Valor energético total: #{@kcal}\n"
|
97
|
+
end
|
98
|
+
|
99
|
+
def vegetal(nombre, cantidad={})
|
100
|
+
aux=[]
|
101
|
+
@@talimentos.each do |alimento|
|
102
|
+
if nombre==alimento.nombre
|
103
|
+
aux << alimento
|
104
|
+
aux << alimento.kcal*cantidad[:gramos] if cantidad[:gramos]
|
105
|
+
if cantidad[:porcion]
|
106
|
+
@@tmediciones.each do |unidad|
|
107
|
+
porc=cantidad[:porcion].each_line(" ").to_a
|
108
|
+
aux << aux[0].kcal*unidad[1]*porc[0].to_f if unidad[0]=porc[1]
|
109
|
+
end
|
110
|
+
end
|
111
|
+
@alimentos << aux
|
112
|
+
@kcal+=aux[1]
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
#def fruta end
|
117
|
+
#def cereal end
|
118
|
+
#def proteina end
|
119
|
+
#def aceite end
|
120
|
+
#def agua end
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
def ig_func (vpruebas,vglucosas)
|
2
|
+
a=vpruebas.collect do
|
3
|
+
|pruebas| pruebas.collect do
|
4
|
+
|prueba| (prueba-pruebas[0])*5-(pruebas[pruebas.length-1]-pruebas[0])*5/(2*pruebas.length)
|
5
|
+
end.reduce('+')
|
6
|
+
end #Array con los AIBC de cada prueba
|
7
|
+
b=vglucosas.collect do
|
8
|
+
|glucosas| glucosas.collect do
|
9
|
+
|glucosa| (glucosa-glucosas[0])*5-(glucosas[glucosas.length-1]-glucosas[0])*5/(2*glucosas.length)
|
10
|
+
end.reduce('+')
|
11
|
+
end #Array con los AIBC de cada glucosa
|
12
|
+
ig=a.zip(b).collect { |v1,v2| v1*100/v2 }.reduce('+')
|
13
|
+
ig/=vpruebas.length #IG
|
14
|
+
return ig
|
15
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class Alimento
|
2
|
+
attr_reader :nombre, :prt, :gluc, :lip
|
3
|
+
include Comparable
|
4
|
+
|
5
|
+
def <=>(another)
|
6
|
+
kcal <=> another.kcal
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize(nombre,prt,gluc,lip)
|
10
|
+
@nombre=nombre
|
11
|
+
@prt=prt
|
12
|
+
@gluc=gluc
|
13
|
+
@lip=lip
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_s()
|
17
|
+
"#{@nombre} prt=#{@prt}g gluc=#{@gluc}g lip=#{@lip}g"
|
18
|
+
end
|
19
|
+
|
20
|
+
def kcal()
|
21
|
+
@prt*4+@gluc*4+@lip*9
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class Grupoal < Alimento
|
26
|
+
|
27
|
+
def initialize(grupo,nombre,prt,gluc,lip)
|
28
|
+
super(nombre,prt,gluc,lip)
|
29
|
+
@grupo=grupo
|
30
|
+
end
|
31
|
+
def to_s
|
32
|
+
puts @grupo+"\n\t"+super.to_s
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
@@ -0,0 +1,115 @@
|
|
1
|
+
Nodo = Struct.new(:dato,:next_,:prev_)
|
2
|
+
|
3
|
+
class Lista
|
4
|
+
|
5
|
+
attr_reader :head, :tail
|
6
|
+
include Enumerable
|
7
|
+
|
8
|
+
def initialize()
|
9
|
+
@head=@tail=nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_back(dato)
|
13
|
+
if dato.instance_of?Alimento
|
14
|
+
node=Nodo.new(dato,nil,nil)
|
15
|
+
|
16
|
+
@head=node if @head.nil?
|
17
|
+
node.prev_=@tail unless @tail.nil?
|
18
|
+
@tail.next_=node unless @tail.nil?
|
19
|
+
@tail=node
|
20
|
+
end
|
21
|
+
if dato.instance_of?Array
|
22
|
+
i=0
|
23
|
+
while i<dato.length do
|
24
|
+
node=Nodo.new(dato[i],nil,nil)
|
25
|
+
|
26
|
+
@head=node if @head.nil?
|
27
|
+
node.prev_=@tail unless @tail.nil?
|
28
|
+
@tail.next_=node unless @tail.nil?
|
29
|
+
@tail=node
|
30
|
+
i+=1
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def add_front(dato)
|
36
|
+
if dato.instance_of?Alimento
|
37
|
+
node=Nodo.new(dato,nil,nil)
|
38
|
+
|
39
|
+
@tail = node if @tail.nil?
|
40
|
+
node.next_ = @head unless @head.nil?
|
41
|
+
@head.prev_ = node unless @head.nil?
|
42
|
+
@head = node
|
43
|
+
end
|
44
|
+
if dato.instance_of?Array
|
45
|
+
i=0
|
46
|
+
while i<dato.length do
|
47
|
+
@tail = node if @tail.nil?
|
48
|
+
node.next_ = @head unless @head.nil?
|
49
|
+
@head.prev_ = node unless @head.nil?
|
50
|
+
@head = node
|
51
|
+
i+=1
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def pop_back
|
57
|
+
if (@tail==@head)&&(@tail==nil)
|
58
|
+
return nil
|
59
|
+
elsif @tail==@head
|
60
|
+
aux=@tail.dup
|
61
|
+
@tail=@head=nil
|
62
|
+
return aux
|
63
|
+
else
|
64
|
+
aux=@tail.dup
|
65
|
+
@tail=@tail.prev_
|
66
|
+
@tail.next_=nil
|
67
|
+
aux.prev_=nil
|
68
|
+
return aux
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def pop_front
|
73
|
+
if (@tail==@head)&&(@tail==nil)
|
74
|
+
return nil
|
75
|
+
elsif @tail==@head
|
76
|
+
aux=@head.dup
|
77
|
+
@head=@tail=nil
|
78
|
+
return aux
|
79
|
+
else
|
80
|
+
aux=@head.dup
|
81
|
+
@head=@head.next_
|
82
|
+
@head.prev_=nil
|
83
|
+
aux.next_=nil
|
84
|
+
return aux
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def mostrar
|
89
|
+
str= ""
|
90
|
+
aux=@head
|
91
|
+
while aux!=nil do
|
92
|
+
str+="\t"+aux.dato.to_s+"\n"
|
93
|
+
aux=aux.next_
|
94
|
+
end
|
95
|
+
str
|
96
|
+
end
|
97
|
+
|
98
|
+
def [] (index)
|
99
|
+
i=0
|
100
|
+
aux=@head
|
101
|
+
while i<index&&aux!=nil do
|
102
|
+
i+=1
|
103
|
+
aux=aux.next_
|
104
|
+
end
|
105
|
+
aux
|
106
|
+
end
|
107
|
+
|
108
|
+
def each
|
109
|
+
aux=@head
|
110
|
+
while aux!=nil do
|
111
|
+
yield aux.dato
|
112
|
+
aux=aux.next_
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
def ord_for (valimentos)
|
2
|
+
|
3
|
+
for i in 0...valimentos.length
|
4
|
+
max=valimentos[i]
|
5
|
+
for j in i...valimentos.length
|
6
|
+
if max.kcal < valimentos[j].kcal
|
7
|
+
max,valimentos[j]=valimentos[j],max
|
8
|
+
end
|
9
|
+
end
|
10
|
+
valimentos[i]=max
|
11
|
+
end
|
12
|
+
valimentos
|
13
|
+
|
14
|
+
end
|
15
|
+
def ord_each (valimentos) #Buscar otra forma
|
16
|
+
|
17
|
+
valimentos.each_index do
|
18
|
+
|i| valimentos.each_index do
|
19
|
+
|j| if valimentos[j].kcal<valimentos[i].kcal
|
20
|
+
valimentos[i],valimentos[j]=valimentos[j],valimentos[i]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
def ord_sort (valimentos)
|
27
|
+
valimentos.sort.reverse {|x,y| y.kcal<=>x.kcal }
|
28
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
class Plato
|
2
|
+
@@talimentos=[
|
3
|
+
Alimento.new("Huevo frito", 14.1, 0.0, 19.5),
|
4
|
+
Alimento.new("Leche", 3.3, 4.8, 3.2),
|
5
|
+
Alimento.new("Mantequilla" , 0.7, 0.0, 83.2),
|
6
|
+
Alimento.new("Yogurt", 3.8, 4.9, 3.8),
|
7
|
+
Alimento.new("Cerdo", 21.5, 0.0, 6.3),
|
8
|
+
Alimento.new("Ternera", 21.1, 0.0, 3.1),
|
9
|
+
Alimento.new("Pollo", 20.6, 0.0, 5.6),
|
10
|
+
Alimento.new("Bacalao", 17.7, 0.0, 0.4),
|
11
|
+
Alimento.new("Atun", 21.5, 0.0, 15.5),
|
12
|
+
Alimento.new("Salmon", 19.9, 0.0, 13.6),
|
13
|
+
Alimento.new("Aceite de oliva", 0.0, 0.2, 99.6),
|
14
|
+
Alimento.new("Chocolate", 5.3, 47.0, 30.0),
|
15
|
+
Alimento.new("Azucar", 0.0, 99.8, 0.0),
|
16
|
+
Alimento.new("Arroz", 6.8, 77.7, 0.6),
|
17
|
+
Alimento.new("Lentejas", 23.5, 52.0, 1.4),
|
18
|
+
Alimento.new("Papas", 2.0, 15.4, 0.1),
|
19
|
+
Alimento.new("Tomate", 1.0, 3.5, 0.2),
|
20
|
+
Alimento.new("Cebolla", 1.3, 5.8, 0.3),
|
21
|
+
Alimento.new("Calabaza", 1.1, 4.8, 0.1),
|
22
|
+
Alimento.new("Manzana", 0.3, 12.4, 0.4),
|
23
|
+
Alimento.new("Platanos", 1.2, 21.4, 0.2),
|
24
|
+
Alimento.new("Pera", 0.5, 12.7, 0.3)
|
25
|
+
]
|
26
|
+
@@tmediciones=[
|
27
|
+
["pieza",40],
|
28
|
+
["taza",30],
|
29
|
+
["cucharon",10],
|
30
|
+
["cucharada",5],
|
31
|
+
["pizca",2],
|
32
|
+
["cucharilla",3]
|
33
|
+
]
|
34
|
+
|
35
|
+
def initialize(nombre, &bloque)
|
36
|
+
@nombre=nombre
|
37
|
+
@alimentos=[]
|
38
|
+
@kcal=0
|
39
|
+
if block_given?
|
40
|
+
if block.arity == 1
|
41
|
+
yield self
|
42
|
+
else
|
43
|
+
instance_eval(&bloque)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def to_s
|
49
|
+
output = @nombre
|
50
|
+
output << "\n#{'=' * @nombre.size}\nComposición nutricional:\n"
|
51
|
+
@alimentos.each do |alimento|
|
52
|
+
output << alimento[0].to_s << " kcal=#{alimento[1]}\n"
|
53
|
+
end
|
54
|
+
output << "Valor energético total: #{@kcal}\n"
|
55
|
+
end
|
56
|
+
|
57
|
+
def vegetal(nombre, cantidad={})
|
58
|
+
aux=[]
|
59
|
+
@@talimentos.each{|alimento| aux << alimento if nombre=alimento.aux }
|
60
|
+
aux << alimento.kcal*cantidad[:gramos] if cantidad[:gramos]
|
61
|
+
@@tmediciones.each{|unidad| aux << aux[0].kcal*unidad[1] if unidad[0]=cantidad[:porcion] } if cantidad[:porcion]
|
62
|
+
|
63
|
+
@alimentos << aux
|
64
|
+
end
|
65
|
+
#def fruta end
|
66
|
+
#def cereal end
|
67
|
+
#def proteina end
|
68
|
+
#def aceite end
|
69
|
+
#def agua end
|
70
|
+
end
|