Gema_alu0100891485 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.
@@ -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="Dieta.html" title="Dieta (module)">Dieta</a></span>
88
+
89
+
90
+
91
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Diet.html" title="Diet (class)">Diet</a></span>, <span class='object_link'><a href="GrupoAlimentos.html" title="GrupoAlimentos (class)">GrupoAlimentos</a></span>, <span class='object_link'><a href="GrupoEdad.html" title="GrupoEdad (class)">GrupoEdad</a></span>, <span class='object_link'><a href="List.html" title="List (class)">List</a></span>, <span class='object_link'><a href="Node.html" title="Node (class)">Node</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 Wed Nov 23 10:39:31 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.1).
110
+ </div>
111
+
112
+ </div>
113
+ </body>
114
+ </html>
@@ -0,0 +1,8 @@
1
+ require "dieta/version"
2
+ require "dieta/lista"
3
+ require "dieta/diet"
4
+ require "dieta/newdiet"
5
+
6
+ module Dieta
7
+
8
+ end
@@ -0,0 +1,5 @@
1
+ require "dieta/version"
2
+
3
+ module Dieta
4
+
5
+ end
@@ -0,0 +1,61 @@
1
+ # Define una clase de menú dietético
2
+ class Diet
3
+ include Comparable
4
+ attr_accessor :cabecera, :menu, :vct
5
+ # Constructor, inicializa el objeto con los parámetros pasados para la Cabecera, los Platos y los Valores Calóricos y Porcentajes
6
+ def initialize(cabecera,menu,vct)
7
+ # Atributo que contiene la cabecera del menú
8
+ @cabecera = cabecera
9
+ # Atributo que contiene los platos del menú como una matriz de tantas filas como platos, y tres columnas
10
+ @menu = menu
11
+ # Atributo que contiene el valor calórico y los porcentajes de proteínas, grasas e hidratos de carbono del menú
12
+ @vct = vct
13
+ end
14
+ # Muestra por pantalla la información que contiene el objeto de manera formateada
15
+ def to_s
16
+ s = ""
17
+ s << "#{cabecera[0]} (#{cabecera[1]})\n"
18
+ for i in 0..menu.length-1
19
+ s << "- #{menu[i][0]}, #{menu[i][1]}, #{menu[i][2]}\n"
20
+ end
21
+ s << "V.C.T. | % \t#{vct[0]} kcal | #{vct[1]} - #{vct[2]} - #{vct[3]}\n"
22
+ end
23
+ # Devuelve el nombre de la comida
24
+ def get_cabecera
25
+ @cabecera[0]
26
+ end
27
+ # Devuelve la ingesta
28
+ def get_ingesta
29
+ @cabecera[1]
30
+ end
31
+ # Devuelve el plato con índice pasado por parámetro (1,2,3,...)
32
+ def get_plato(num)
33
+ @menu[num-1]
34
+ end
35
+ # Devuleve el valor calórico de la comida respectiva
36
+ def get_vct
37
+ @vct[0]
38
+ end
39
+ # Devuelve el porcentaje de proteínas de la comida
40
+ def get_proteinas
41
+ @vct[1]
42
+ end
43
+ # Devuelve el porcentaje de grasa de la comida
44
+ def get_grasas
45
+ @vct[2]
46
+ end
47
+ # Devuelve el porcentaje de hidratos de carbono de la comida
48
+ def get_hidratos
49
+ @vct[3]
50
+ end
51
+ # Permite usar los operadores <,>,<=,>= para comparar objetos de la clase Diet
52
+ def <=>(other)
53
+ @vct[0] <=> other.vct[0]
54
+ end
55
+ # Permite comparar si dos objetos de la clase Diet son iguales
56
+ def ==(other)
57
+ @cabecera == other.cabecera
58
+ @menu == other.menu
59
+ @vct == other.vct
60
+ end
61
+ end
@@ -0,0 +1,46 @@
1
+ class Diet
2
+ attr_reader :cabecera, :menu, :vct
3
+ def initialize(cabecera,menu,vct)
4
+ @cabecera = cabecera
5
+ @menu = menu
6
+ @vct = vct
7
+ end
8
+
9
+ def to_s
10
+ s = ""
11
+ s << "#{cabecera[0]}" "(#{cabecera[1]} - #{cabecera[2]})\n"
12
+ for i in 0..menu.length-1
13
+ s << "- #{menu[i][0]}, #{menu[i][1]}, #{menu[i][2]}\n"
14
+ end
15
+ s << "V.C.T. | % \t#{vct[0]} | #{vct[1]} - #{vct[2]} - #{vct[3]}\n"
16
+ end
17
+
18
+
19
+ def get_cabecera
20
+ @cabecera[0]
21
+ end
22
+
23
+ def get_ingesta
24
+ @cabecera[1]
25
+ end
26
+
27
+ def get_plato(num)
28
+ @menu[num-1]
29
+ end
30
+
31
+ def get_vct
32
+ @vct[0]
33
+ end
34
+
35
+ def get_proteinas
36
+ @vct[1]
37
+ end
38
+
39
+ def get_grasas
40
+ @vct[2]
41
+ end
42
+
43
+ def get_hidratos
44
+ @vct[3]
45
+ end
46
+ end
@@ -0,0 +1,17 @@
1
+ # Define una clase hija de Diet que añade el grupo de alimentos
2
+ class GrupoAlimentos < Diet
3
+ attr_accessor :grupo
4
+ # Contructor, inicializa la cabecera, platos y vct de la clase padre Diet y almacena el grupo de alimentos
5
+ def initialize(grupo,cabecera,menu,vct)
6
+ # Almacena el grupo de alimentos
7
+ @grupo = grupo
8
+ super(cabecera,menu,vct)
9
+ end
10
+ # Añade el grupo de alimentos a la salida formateada por pantalla de la clase Diet
11
+ def to_s
12
+ s = ""
13
+ s << super
14
+ s << "Grupo Alimentos: #{@grupo}"
15
+ s
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # Define una clase hija de Diet que añade el grupo de edad
2
+ class GrupoEdad < Diet
3
+ attr_accessor :grupo
4
+ # Contructor, inicializa la cabecera, platos y vct de la clase padre Diet y almacena el grupo de edad
5
+ def initialize(grupo,cabecera,menu,vct)
6
+ # Almacena el grupo de edad
7
+ @grupo = grupo
8
+ super(cabecera,menu,vct)
9
+ end
10
+ # Añade el grupo de edad a la salida formateada por pantalla de la clase Diet
11
+ def to_s
12
+ s = ""
13
+ s << super
14
+ s << "Grupo Edad: #{@grupo}"
15
+ s
16
+ end
17
+ end
@@ -0,0 +1,96 @@
1
+ # El struct Node, es un nodo que contiene un valor y tiene dos atributos next y prev que apuntan al nodo siguiente y al previo
2
+ Node = Struct.new(:value, :next, :prev)
3
+ # Define una clase de lista doblemente enlazada
4
+ class List
5
+ include Enumerable
6
+ attr_accessor :head, :tail
7
+ # Constructor de la clase, crea una lista vacía
8
+ def initialize
9
+ # Atributo que es igual al primer elemento de la lista
10
+ @head = nil
11
+ # Atributo que es igual al último elemento de la lista
12
+ @tail = nil
13
+ end
14
+ # Devuleve true si la lista está vacía y false si contiene al menos un elemento
15
+ def empty
16
+ if @head == nil
17
+ true
18
+ else
19
+ false
20
+ end
21
+ end
22
+ # Elimina el primer elemento de la lista y lo devuelve
23
+ def extract_first
24
+ if empty()
25
+ nil
26
+ else
27
+ nodeAux = @head
28
+ @head = @head.next
29
+ nodeAux.value
30
+ end
31
+ end
32
+ # Elimina el último elemento de la lista y lo devuelve
33
+ def extract_last
34
+ if empty()
35
+ nil
36
+ else
37
+ nodeAux = @tail
38
+ @tail = @tail.prev
39
+ nodeAux.value
40
+ end
41
+ end
42
+ # Inserta un nuevo nodo, que se crea a partir del valor pasado por parámetro, por el principio
43
+ def insert_first(value)
44
+ newNode = Node.new(value, nil, nil)
45
+ if empty()
46
+ @head = newNode
47
+ @tail = newNode
48
+ else
49
+ aux = @head
50
+ @head = newNode
51
+ @head.next = aux
52
+ if aux == @tail
53
+ @tail.prev = @head
54
+ else
55
+ aux.prev = @head
56
+ end
57
+ end
58
+ end
59
+ # Inserta un nuevo nodo, que se crea a partir del valor pasado por parámetro, por el final
60
+ def insert_last(value)
61
+ newNode = Node.new(value, nil, nil)
62
+ if empty()
63
+ @head = newNode
64
+ @tail = newNode
65
+ else
66
+ aux = @tail
67
+ @tail = newNode
68
+ @tail.prev = aux
69
+ if @head == aux
70
+ @head.next = @tail
71
+ else
72
+ aux.next = @tail
73
+ end
74
+ end
75
+ end
76
+ # Usando la función insert_first permite pasar un vector de valores e insertarlos
77
+ def insert_multi_first(values)
78
+ for i in 0..values.length-1
79
+ insert_first(values[i])
80
+ end
81
+ end
82
+ # Usando la función insert_last permite pasar un vector de valores e insertarlos
83
+ def insert_multi_last(values)
84
+ for i in 0..values.length-1
85
+ insert_last(values[i])
86
+ end
87
+ end
88
+ # Recorre los elementos del vector para poder usar los funciones Enumerable
89
+ def each
90
+ aux = @head
91
+ while aux != nil
92
+ yield aux.value
93
+ aux = aux.next
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,43 @@
1
+ class NewDiet
2
+ attr_accessor :titulo, :ingesta, :platos, :vct
3
+ def initialize(name, &block)
4
+ @titulo
5
+ @ingesta = []
6
+ @platos = []
7
+ @porcentajes = []
8
+ if block_given?
9
+ if block.arity == 1
10
+ yield self
11
+ else
12
+ instance_eval(&block)
13
+ end
14
+ end
15
+ end
16
+
17
+ def titulo(title)
18
+ @titulo = title
19
+ end
20
+
21
+ def ingesta(options = {})
22
+ @ingesta << " (#{options[:min]}) - (#{options[:max]})" if options[:min] && options[:max]
23
+ end
24
+
25
+ def plato(options = {})
26
+ @platos << " (#{options[:descripcion]}), (#{options[:porcion]}), (#{options[:gramos]}) g" if options[:descripcion] && options[:porcion] && options[:gramos]
27
+ end
28
+
29
+ def porcentajes(options = {})
30
+ @porcentajes << " (#{options[:vct]}) kcal | (#{options[:proteinas]})% - (#{options[:grasas]})% - (#{options[:hidratos]})%" if options[:vct] && options[:grasas] && options[:hidratos]
31
+ end
32
+
33
+ def to_s
34
+ output = ""
35
+ output << "#{@titulo} (#{@ingesta})\n"
36
+ @platos.each do |plato|
37
+ output << "-#{plato}\n"
38
+ end
39
+ output << "V.C.T. | % \t#{@porcentajes}\n"
40
+ end
41
+
42
+ end
43
+
@@ -0,0 +1,3 @@
1
+ module Dieta
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,176 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Gema_alu0100891485
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Pedro Miguel Lagüera Cabrera
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-12-14 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.13'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.13'
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
+ description: Se añade el comparador <=> y == a la clase Diet para poder comparar objetos
98
+ de esta clase, y se define each en la clase de lista doblemente enlazada List para
99
+ poder usar métodos de Enumerable.
100
+ email:
101
+ - alu0100891485@ull.edu.es
102
+ executables: []
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".dieta.gemspec.swo"
107
+ - ".dieta.gemspec.swp"
108
+ - ".gitignore"
109
+ - ".rspec"
110
+ - ".travis.yml"
111
+ - CODE_OF_CONDUCT.md
112
+ - Gemfile
113
+ - Guardfile
114
+ - LICENSE.txt
115
+ - README.md
116
+ - README.md~
117
+ - Rakefile
118
+ - bin/console
119
+ - bin/setup
120
+ - dieta.gemspec
121
+ - dieta.gemspec~
122
+ - doc/Diet.html
123
+ - doc/Dieta.html
124
+ - doc/GrupoAlimentos.html
125
+ - doc/GrupoEdad.html
126
+ - doc/List.html
127
+ - doc/Node.html
128
+ - doc/_index.html
129
+ - doc/class_list.html
130
+ - doc/css/common.css
131
+ - doc/css/full_list.css
132
+ - doc/css/style.css
133
+ - doc/file.README.html
134
+ - doc/file_list.html
135
+ - doc/frames.html
136
+ - doc/index.html
137
+ - doc/js/app.js
138
+ - doc/js/full_list.js
139
+ - doc/js/jquery.js
140
+ - doc/method_list.html
141
+ - doc/top-level-namespace.html
142
+ - lib/dieta.rb
143
+ - lib/dieta.rb~
144
+ - lib/dieta/diet.rb
145
+ - lib/dieta/diet.rb~
146
+ - lib/dieta/grupo_alimentos.rb
147
+ - lib/dieta/grupo_edad.rb
148
+ - lib/dieta/lista.rb
149
+ - lib/dieta/newdiet.rb
150
+ - lib/dieta/version.rb
151
+ homepage: https://github.com/ULL-ESIT-LPP-1617/menu-dietetico-alu0100891485.git
152
+ licenses:
153
+ - MIT
154
+ metadata: {}
155
+ post_install_message:
156
+ rdoc_options: []
157
+ require_paths:
158
+ - lib
159
+ required_ruby_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ required_rubygems_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ requirements: []
170
+ rubyforge_project:
171
+ rubygems_version: 2.5.1
172
+ signing_key:
173
+ specification_version: 4
174
+ summary: Práctica de Ruby en la que se añade Comparable a la clase Diet y Enumerable
175
+ a la clase List
176
+ test_files: []