prct08 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,114 @@
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
+ &mdash; Documentation by YARD 0.9.5
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"></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> &raquo;
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
+ <iframe id="search_frame" src="class_list.html"></iframe>
63
+
64
+ <div id="content"><h1>Top Level Namespace
65
+
66
+
67
+
68
+ </h1>
69
+ <div class="box_info">
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+ </div>
82
+
83
+ <h2>Defined Under Namespace</h2>
84
+ <p class="children">
85
+
86
+
87
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Prct08.html" title="Prct08 (module)">Prct08</a></span>
88
+
89
+
90
+
91
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Dieta.html" title="Dieta (class)">Dieta</a></span>, <span class='object_link'><a href="Lista.html" title="Lista (class)">Lista</a></span>, <span class='object_link'><a href="Menu.html" title="Menu (class)">Menu</a></span>, <span class='object_link'><a href="Menu_alimento.html" title="Menu_alimento (class)">Menu_alimento</a></span>, <span class='object_link'><a href="Menu_edad.html" title="Menu_edad (class)">Menu_edad</a></span>, <span class='object_link'><a href="Nodo.html" title="Nodo (class)">Nodo</a></span>, <span class='object_link'><a href="Plato.html" title="Plato (class)">Plato</a></span>
92
+
93
+
94
+ </p>
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+ </div>
105
+
106
+ <div id="footer">
107
+ Generated on Thu Nov 24 18:35:14 2016 by
108
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
109
+ 0.9.5 (ruby-2.3.0).
110
+ </div>
111
+
112
+ </div>
113
+ </body>
114
+ </html>
data/lib/prct08.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "prct08/version"
2
+
3
+ module Prct08
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,23 @@
1
+ #require './menu'
2
+
3
+ class Dieta
4
+
5
+ attr_accessor :menus #geters y serters asi nos ahorramos escribirlo
6
+
7
+ def initialize(menus)
8
+ @menus = menus
9
+ end
10
+
11
+
12
+ def to_s
13
+ string =""
14
+ @menus.each_with_index do |elem, i|
15
+ string+="#{elem.to_s}\n\n" #llama al metodo to_s de la clase menu
16
+ end
17
+
18
+ return string
19
+ end
20
+
21
+ end
22
+
23
+
@@ -0,0 +1,161 @@
1
+ Nodo = Struct.new(:value, :next, :before)
2
+
3
+ class Lista
4
+ attr_accessor :head, :tail, :size
5
+ include Enumerable
6
+ def initialize
7
+ @head = nil #Cabecera de la lista
8
+ @tail = nil #Cola de la lista
9
+ @size = 0 #Tamaño de la lista
10
+ end
11
+
12
+ def insert_head(nodo)
13
+ if empty
14
+ nodo[:next] = nil
15
+ nodo[:before] = nil
16
+ @head = nodo
17
+ @tail = nodo
18
+ else
19
+ nodo[:next] = @head
20
+ @head[:before] = nodo
21
+ nodo[:before] = nil
22
+ @head = nodo
23
+ end
24
+ @size = @size + 1
25
+ end
26
+
27
+ def insert_tail(nodo)
28
+ if empty
29
+ nodo[:next] = nil
30
+ nodo[:before] = nil
31
+ @head = nodo
32
+ @tail = nodo
33
+ else
34
+ @tail[:next] = nodo
35
+ nodo[:next] = nil
36
+ nodo[:before] = @tail
37
+ @tail = nodo
38
+ end
39
+ @size = @size + 1
40
+ end
41
+
42
+ def get_pos(index)
43
+ pos = 0
44
+ aux = @head
45
+ while pos != (index - 1) do
46
+ pos = pos + 1
47
+ aux = aux.next
48
+ end
49
+ return aux
50
+ end
51
+
52
+ def insert_pos(nodo, index)
53
+ pos = 0
54
+ aux = @head
55
+ if pos == 1
56
+ insert_head(nodo)
57
+ end
58
+ if pos == size
59
+ insert_tail(nodo)
60
+ else
61
+ while(pos != (index - 1) && (aux.next != nil)) do
62
+ if pos == index - 2
63
+ nodo[:next] = aux.next
64
+ nodo[:before] = aux
65
+ aux[:next] = nodo
66
+ end
67
+ if pos == index - 1
68
+ aux = nodo.next
69
+ aux[:before] = nodo
70
+ else
71
+ pos = pos + 1
72
+ aux = aux.next
73
+ end
74
+ @size = @size + 1
75
+ end
76
+ end
77
+ end
78
+
79
+ def insert_mul (nodos, index)
80
+ for i in 0..(nodos.length - 1)
81
+ insert_pos(nodos[i], index)
82
+ index = index + 1
83
+ end
84
+ end
85
+
86
+ def extract_head
87
+ if @head == nil
88
+ @tail = nil
89
+ else
90
+ aux = @head
91
+ @head = @head.next
92
+ @size = @size - 1
93
+ end
94
+ return aux
95
+ end
96
+
97
+ def extract_tail
98
+ if @head == @tail
99
+ return @tail
100
+ @head = nil
101
+ @tail = nil
102
+ @size = @size - 1
103
+ else
104
+ aux = @tail
105
+ @tail = aux[:before]
106
+ @tail[:next] = nil
107
+ @size = @size - 1
108
+ return aux
109
+ end
110
+ end
111
+
112
+ def extract_pos(index)
113
+ pos = 0
114
+ aux = @head
115
+ if pos == index - 1
116
+ extract_head()
117
+ end
118
+ if index == @size
119
+ extract_tail()
120
+ else
121
+ while (pos != (index - 1)) && (aux.next != nil) do
122
+ pos = pos + 1
123
+ aux = aux.next
124
+ end
125
+ auxBef = aux.before
126
+ auxNext = aux.next
127
+ auxBef[:next] = auxNext
128
+ auxNext[:before] = auxBef
129
+ return aux
130
+ @size = @size - 1
131
+ end
132
+ end
133
+
134
+ def to_s
135
+ aux = @head
136
+ if empty != true
137
+ string = ""
138
+ while aux.next != nil
139
+ string += "\n\n#{aux.value}"
140
+ aux = aux.next
141
+ end
142
+ string += "\n\n#{aux.value}"
143
+ return string
144
+ else
145
+ return "Lista vacia"
146
+ end
147
+ end
148
+
149
+ def empty
150
+ return size==0
151
+ end
152
+
153
+ def each
154
+ aux = @head
155
+ while aux != nil
156
+ yield aux.value
157
+ aux = aux.next
158
+ end
159
+ end
160
+
161
+ end
@@ -0,0 +1,92 @@
1
+ #require './plato'
2
+
3
+ class Menu
4
+
5
+ attr_accessor :titulo, :ingestaPor, :platos, :valorCT, :porcentajePro, :porcentajeGra, :porcentajeHid #geters y serters asi nos ahorramos escribirlo
6
+
7
+ include Comparable
8
+
9
+ def initialize(titulo, ingestaPor, platos, valorCT, porcentajePro, porcentajeGra, porcentajeHid)
10
+ @titulo = titulo
11
+ @ingestaPor = ingestaPor
12
+ @platos = platos
13
+ @valorCT = valorCT
14
+ @porcentajePro = porcentajePro
15
+ @porcentajeGra = porcentajeGra
16
+ @porcentajeHid = porcentajeHid
17
+ end
18
+
19
+
20
+ def getPlato(pos)
21
+
22
+ if(pos-1 >= platos.length || pos-1 < 0)
23
+ return (puts "Error posicion no valida")
24
+ end
25
+
26
+ if(pos-1 < platos.length)
27
+ return platos[pos-1]
28
+ end
29
+
30
+ end
31
+
32
+ def getConjPlatos
33
+ return platos
34
+ end
35
+
36
+ def <=> (otro)
37
+ return nil unless otro.is_a?Menu #Si el otro objeto no es del tipo menu devuelve nil
38
+ if (@valorCT[0] == otro.valorCT[0])
39
+ if(@platos.length == otro.platos.length)
40
+ return 0
41
+ else
42
+ if(@platos.length < otro.platos.length)
43
+ return -1
44
+ end
45
+ return 1
46
+ end
47
+ else
48
+ if(@valorCT[0] < otro.valorCT[0])
49
+ return -1
50
+ end
51
+ return 1
52
+ end
53
+ end
54
+
55
+ def ==(otro)
56
+ if otro.is_a?Menu
57
+ @titulo == otro.titulo &&
58
+ @ingestaPor == otro.ingestaPor &&
59
+ @platos == otro.platos &&
60
+ @valorCT == otro.valorCT &&
61
+ @porcentajePro == otro.porcentajePro &&
62
+ @porcentajeGra == otro.porcentajeGra &&
63
+ @porcentajeHid == otro.porcentajeHid
64
+ else
65
+ false
66
+ end
67
+ end
68
+
69
+ def to_s
70
+ string = "#{@titulo} ("
71
+
72
+ @ingestaPor.each_with_index do |elem,i|
73
+ if(i==1)
74
+ string+=" - "
75
+ end
76
+ string+= "#{elem}"
77
+ end
78
+ string+="%)\n"
79
+
80
+ @platos.each_with_index do |elem,i|
81
+ string+="- #{elem.to_s}\n"
82
+ end
83
+
84
+ string+="V.C.T. | % #{valorCT[0]} #{valorCT[1]} | #{porcentajePro}% - #{porcentajeGra}% - #{porcentajeHid}%"
85
+
86
+ return string
87
+ end
88
+
89
+ end
90
+
91
+
92
+
@@ -0,0 +1,15 @@
1
+ #require "menu.rb"
2
+
3
+ class Menu_alimento < Menu
4
+ attr_accessor :gAlimentos
5
+
6
+ def initialize(titulo, ingestaPor, platos, valorCT, porcentajePro, porcentajeGra, porcentajeHid, grupoAlimentos)
7
+ super(titulo, ingestaPor, platos, valorCT, porcentajePro, porcentajeGra, porcentajeHid)
8
+ @gAlimentos = grupoAlimentos
9
+ end
10
+
11
+ def to_s
12
+ string = "Menu con alimentos del tipo: #{gAlimentos}\n" + super.to_s
13
+ return string
14
+ end
15
+ end
@@ -0,0 +1,57 @@
1
+ class Menu_dsl
2
+ attr_accessor :etiqueta, :titulo, :ingestaIn, :platosIn, :porcentajeIn
3
+
4
+ def initialize(etiqueta, &block)
5
+ self.etiqueta = etiqueta
6
+ self.titulo = ""
7
+ self.ingestaIn = []
8
+ self.platosIn = []
9
+ self.porcentajeIn = []
10
+
11
+ if block_given?
12
+ if block.arity == 1
13
+ yield self
14
+ else
15
+ instance_eval(&block)
16
+ end
17
+ end
18
+ end
19
+
20
+ def titulos(options = {})
21
+ titulo << "#{options[:titulo]}"
22
+ end
23
+
24
+ def ingesta(options = {})
25
+ ingestaIn << "#{options[:min]}" if options[:min]
26
+ ingestaIn << "#{options[:max]}" if options[:max]
27
+ end
28
+
29
+ def platos(options = {})
30
+ plato = []
31
+ plato << "#{options[:descripcion]}" if options[:descripcion]
32
+ plato << "#{options[:porcion]}" if options[:porcion]
33
+ plato << "#{options[:gramos]}" if options[:gramos]
34
+ platosIn << plato
35
+ end
36
+
37
+ def porcentajes(options = {})
38
+ porcentaje = []
39
+ porcentaje << "#{options[:vct]}" if options[:vct]
40
+ porcentaje << "#{options[:proteinas]}" if options[:proteinas]
41
+ porcentaje << "#{options[:grasas]}" if options[:grasas]
42
+ porcentaje << "#{options[:hidratos]}" if options[:hidratos]
43
+ porcentajeIn << porcentaje
44
+ end
45
+
46
+ def to_s
47
+ out = "#{titulo}"
48
+ out << "\nMinima: #{ingestaIn[0]} % - Maximo: #{ingestaIn[1]} %"
49
+ platosIn.each_with_index do |plato, index|
50
+ out << "\n\tDescripcion: #{plato[0]} \n\tPorcion: #{plato[1]} \n\tGramos: #{plato[2]}\n"
51
+ end
52
+ porcentajeIn.each_with_index do |porcentaje, index|
53
+ out << "\n\tV.C.T: #{porcentaje[0]} \n\tProteinas: #{porcentaje[1]} \n\tGrasas: #{porcentaje[2]} \n\tHidratos:#{porcentaje[3]} \n"
54
+ end
55
+ out
56
+ end
57
+ end