refbiblio_rafa 0.3.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.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +2 -0
  3. data/.travis.yml +9 -0
  4. data/CODE_OF_CONDUCT.md +13 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +108 -0
  7. data/Guardfile +82 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +3 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +7 -0
  13. data/coverage/.last_run.json +5 -0
  14. data/coverage/.resultset.json +467 -0
  15. data/coverage/.resultset.json.lock +0 -0
  16. data/doc/Doublylinkedlist.html +129 -0
  17. data/doc/Doublylinkedlist/Doublylinkedlist.html +1139 -0
  18. data/doc/RefAPA.html +129 -0
  19. data/doc/RefAPA/Refapa.html +503 -0
  20. data/doc/RefBiblio.html +129 -0
  21. data/doc/RefBiblio/ArtPeriodico.html +522 -0
  22. data/doc/RefBiblio/DocElectronico.html +782 -0
  23. data/doc/RefBiblio/Libro.html +514 -0
  24. data/doc/RefBiblio/Periodicas.html +345 -0
  25. data/doc/RefBiblio/Referencia.html +1068 -0
  26. data/doc/_index.html +201 -0
  27. data/doc/class_list.html +58 -0
  28. data/doc/css/common.css +1 -0
  29. data/doc/css/full_list.css +57 -0
  30. data/doc/css/style.css +339 -0
  31. data/doc/file.README.html +79 -0
  32. data/doc/file_list.html +60 -0
  33. data/doc/frames.html +26 -0
  34. data/doc/index.html +79 -0
  35. data/doc/js/app.js +219 -0
  36. data/doc/js/full_list.js +181 -0
  37. data/doc/js/jquery.js +4 -0
  38. data/doc/method_list.html +303 -0
  39. data/doc/top-level-namespace.html +112 -0
  40. data/lib/doublylinkedlist/doublylinkedlist.rb +161 -0
  41. data/lib/doublylinkedlist/version.rb +3 -0
  42. data/lib/refAPA/refapa.rb +36 -0
  43. data/lib/refAPA/version.rb +3 -0
  44. data/lib/refBiblio.rb +8 -0
  45. data/lib/refBiblio/referencia.rb +242 -0
  46. data/lib/refBiblio/version.rb +3 -0
  47. data/refBiblio.gemspec +33 -0
  48. metadata +203 -0
@@ -0,0 +1,112 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Top Level Namespace
8
+
9
+ &mdash; Documentation by YARD 0.8.7.6
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
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '';
20
+ framesUrl = "frames.html#!top-level-namespace.html";
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="_index.html">Index</a> &raquo;
35
+
36
+
37
+ <span class="title">Top Level Namespace</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
+ </div>
42
+
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <iframe id="search_frame"></iframe>
65
+
66
+ <div id="content"><h1>Top Level Namespace
67
+
68
+
69
+
70
+ </h1>
71
+
72
+ <dl class="box">
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+ </dl>
82
+ <div class="clear"></div>
83
+
84
+ <h2>Defined Under Namespace</h2>
85
+ <p class="children">
86
+
87
+
88
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Doublylinkedlist.html" title="Doublylinkedlist (module)">Doublylinkedlist</a></span>, <span class='object_link'><a href="RefAPA.html" title="RefAPA (module)">RefAPA</a></span>, <span class='object_link'><a href="RefBiblio.html" title="RefBiblio (module)">RefBiblio</a></span>
89
+
90
+
91
+
92
+
93
+ </p>
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+ </div>
104
+
105
+ <div id="footer">
106
+ Generated on Tue Dec 22 21:54:44 2015 by
107
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
+ 0.8.7.6 (ruby-2.2.1).
109
+ </div>
110
+
111
+ </body>
112
+ </html>
@@ -0,0 +1,161 @@
1
+ module Doublylinkedlist
2
+ Struct.new("Nodo", :ant, :valor, :sig)
3
+ # En esta clase creamos nuestra propia lista doblemente enlazada
4
+ # @author Rafael Herrero
5
+ class Doublylinkedlist
6
+ include Enumerable
7
+ # Iniciar los punteros de la lista, inicio y final
8
+ def initialize()
9
+ @inicio = nil
10
+ @final = nil
11
+ end
12
+ # Metodo para imprimir la lista con formato
13
+ # @return la lista formateada en un string
14
+ def to_s
15
+ actual = @inicio
16
+ cadena = "|"
17
+ while !actual.nil?
18
+ cadena << actual[:valor].to_s
19
+
20
+ if !actual[:sig].nil?
21
+ cadena << ", "
22
+ end
23
+
24
+ actual = actual[:sig]
25
+ end
26
+ cadena << "|"
27
+ return cadena
28
+ end
29
+ # Metodo que nos permite insertar algo al inicio de la lista
30
+ # @param [val] val recibe el valor a insertar en la lista
31
+
32
+ def insertar_inicio(val)
33
+ if @inicio.nil?
34
+ @inicio = Struct::Nodo.new(nil, val, nil)
35
+ @final = @inicio
36
+ else
37
+ copia = @inicio
38
+ @inicio = Struct::Nodo.new(nil, val, copia)
39
+ copia[:ant] = @inicio
40
+ end
41
+ end
42
+ # Metodo que nos permite insertar algo al final de la lista
43
+ # @param [val] val recibe el valor a insertar en la lista
44
+
45
+ def insertar_final(val)
46
+ if @final.nil?
47
+ @inicio = Struct::Nodo.new(nil, val, nil)
48
+ @final = @inicio
49
+ else
50
+ copia = @final
51
+ @final[:sig] = Struct::Nodo.new(copia, val, nil)
52
+ copia2 = @final[:sig]
53
+ @final = copia2
54
+ end
55
+ end
56
+ # Metodo que nos permite extraer algo al inicio de la lista
57
+
58
+ def extraer_inicio()
59
+
60
+ if !@inicio.nil?
61
+
62
+ if @inicio[:sig].nil? && @final[:sig].nil?
63
+ @inicio = nil
64
+ @final = nil
65
+
66
+ else
67
+ @inicio = @inicio[:sig]
68
+ @inicio[:ant] = nil
69
+ end
70
+
71
+ else
72
+ raise RuntimeError, "La lista esta vacia"
73
+ end
74
+ end
75
+ # Metodo que nos permite extraer algo al final de la lista
76
+
77
+ def extraer_final()
78
+
79
+ if !@inicio.nil?
80
+
81
+ if @inicio[:sig].nil? && @final[:sig].nil?
82
+ @inicio = nil
83
+ @final = nil
84
+
85
+ else
86
+ @final = @final[:ant]
87
+ @final[:sig] = nil
88
+ end
89
+
90
+ else
91
+ raise RuntimeError, "La lista esta vacia"
92
+ end
93
+ end
94
+ # Metodo que nos devuelve la cantidad de elementos en la lista
95
+ # @return cantidad de elementos en la lista
96
+
97
+ def tamano()
98
+ if !@inicio.nil?
99
+
100
+ contador = 1
101
+ copia = @inicio
102
+
103
+ while !copia[:sig].nil?
104
+ contador += 1
105
+ copia2 = copia[:sig]
106
+ copia = copia2
107
+ end
108
+ end
109
+ return contador
110
+ end
111
+ # Metodo que devuelve lo contenido en una posicion de la lista
112
+ # @param [pos] pos del elemento deseado
113
+ # @return nodo de la posicion de la lista
114
+ def posicion (pos)
115
+ if @inicio.nil?
116
+ raise RuntimeError, "La lista esta vacia"
117
+ end
118
+
119
+ if pos<0 || pos>tamano-1
120
+ raise RuntimeError, "La posicion no es correcta"
121
+ end
122
+
123
+ contador=0
124
+ copia=@inicio
125
+ while contador<pos && !copia.nil?
126
+ copia2 = copia[:sig]
127
+ copia = copia2
128
+ contador += 1
129
+ end
130
+
131
+ return copia[:valor]
132
+ end
133
+ # Método para que la lista sea enumerable
134
+
135
+ def each (&block)
136
+ copia = @inicio
137
+ while !copia.nil?
138
+ block.call(copia[:valor])
139
+ copia = copia[:sig]
140
+ end
141
+ end
142
+ # Metodo que nos ordenada la lista segun los criterios de la APA
143
+
144
+ def ordenar!
145
+ cambio = true
146
+ while cambio
147
+ cambio = false
148
+ i = @inicio
149
+ i_1 = @inicio[:sig]
150
+ while i_1 != nil
151
+ if(i[:valor] > i_1[:valor])
152
+ i[:valor], i_1[:valor] = i_1[:valor], i[:valor]
153
+ cambio = true
154
+ end
155
+ i = i_1
156
+ i_1 = i_1[:sig]
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
@@ -0,0 +1,3 @@
1
+ module Doublylinkedlist
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,36 @@
1
+ require 'refBiblio/referencia'
2
+
3
+ module RefAPA
4
+ # En esta clase creamos nuestra lista de referencias segun APA
5
+ # @author Rafael Herrero
6
+ class Refapa
7
+ include Enumerable
8
+ def initialize()
9
+ @lista = Doublylinkedlist::Doublylinkedlist.new
10
+ end
11
+ # Metodo que inserta una referencia en la lista y la ordena
12
+ # @param [ref] ref a insertar
13
+
14
+ def insertar(ref)
15
+ @lista.insertar_final(ref)
16
+ @lista.ordenar!
17
+ end
18
+ # Método para que la clase sea enumerable
19
+ # @yield [i] Cada elemento de la lista
20
+
21
+ def each
22
+ @lista.each{ |i| yield i}
23
+ end
24
+ # Metodo que devuelve en un string la lista de referencias formateada
25
+ # @return un string con la lista de referencias ordenada y con formato
26
+
27
+ def to_s
28
+ string = ""
29
+ @lista.each do |i|
30
+ string << i.to_s
31
+ string << "\n"
32
+ end
33
+ return string
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,3 @@
1
+ module RefAPA
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,8 @@
1
+ require "refBiblio/version"
2
+ require "refBiblio/referencia"
3
+ require "doublylinkedlist/doublylinkedlist"
4
+ require "refAPA/refapa"
5
+
6
+ module RefBiblio
7
+ # Your code goes here...
8
+ end
@@ -0,0 +1,242 @@
1
+ require 'date'
2
+
3
+ module RefBiblio
4
+ class Referencia
5
+ # Clase que nos permite representar cada elemento de una referencia
6
+ # @author Rafael Herrero
7
+
8
+ include Comparable
9
+ attr_accessor :autor, :titulo, :editorial, :publicacion
10
+ def initialize()
11
+ end
12
+ # Metodo para guardar el nombre del autor/autores
13
+ # @param [autor] autor Nombre del autor a introducir
14
+
15
+ def autor (autor)
16
+ str=""
17
+ autor.each do |a|
18
+ separar = a.split(/\W+/)
19
+ str+=separar[1]
20
+ str+=", "
21
+ unless separar[2].nil?
22
+ str+=separar[2][0]
23
+ str+=". "
24
+ end
25
+ str+=separar[0][0]
26
+ str+="."
27
+ str+=" & " unless a == autor.last
28
+ end
29
+ @autor = str
30
+ end
31
+ # Metodo para guardar el titulo de la referencia
32
+ # @param [titulo] titulo Titulo de la referencia a introducir
33
+
34
+ def titulo (titulo)
35
+ tit = titulo.split(' ')
36
+ tit.each do |word|
37
+ if word.length > 3
38
+ word.capitalize!
39
+ else
40
+ word.downcase!
41
+ end
42
+ if word == tit[0]
43
+ word.capitalize!
44
+ end
45
+ @titulo = tit.join(' ')
46
+ end
47
+ # Metodo para guardar el editorial de la referencia
48
+ # @param [editorial] editorial Editorial de la referencia a introducir
49
+
50
+ def editorial(editorial)
51
+ @editorial = editorial
52
+ end
53
+ # Metodo para guardar la fecha de publicacion de la referencia
54
+ # @param [publicacion] publicacion Fecha de publicacion de la referencia a introducir
55
+
56
+ def publicacion (publicacion)
57
+ @publicacion = publicacion
58
+ end
59
+ # Metodo para obtener el titulo de la referencia
60
+ # @return Titulo de la referencia
61
+
62
+ def get_titulo
63
+ @titulo
64
+ end
65
+ # Metodo para obtener el autor/autores de la referencia
66
+ # @return Autor/autores de la referencia
67
+
68
+ def get_autor
69
+ @autor
70
+ end
71
+ # Metodo para obtener el editorial de la referencia
72
+ # @return Editorial de la referencia
73
+
74
+ def get_editorial
75
+ @editorial
76
+ end
77
+ # Metodo para obtener la fecha de publicacion de la referencia
78
+ # @return Fecha de publicacion de la referencia
79
+
80
+ def get_publicacion
81
+ @publicacion
82
+ end
83
+ # Método con el que podemos usar el modulo Enumerable
84
+ # @param otro Otro elemento a comparar
85
+ # @return Devuelve valores entre -1 y 1 segun el orden
86
+
87
+ def <=> (otro)
88
+ if(@autor == otro.get_autor)
89
+ if(@publicacion == otro.get_publicacion)
90
+ if(@titulo == otro.get_titulo)
91
+ return 0
92
+ else
93
+ arr = [@titulo, otro.get_titulo]
94
+ arr.sort_by!{|t| t.downcase}
95
+ if(arr.first == @titulo)
96
+ return 1
97
+ end
98
+ return -1
99
+ end
100
+ elsif publicacion > otro.get_publicacion
101
+ return -1
102
+ else
103
+ return 1
104
+ end
105
+ else
106
+ arr = [@autor, otro.get_autor]
107
+ arr.sort_by!{|t| t.downcase}
108
+ if(arr.first == @autor)
109
+ return -1
110
+ end
111
+ return 1
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ class Libro < Referencia
118
+ # Clase que nos permite representar libros de una referencia
119
+ # @author Rafael Herrero
120
+
121
+ attr_accessor :edicion, :volumen
122
+ def initialize(&block)
123
+ if block_given?
124
+ if block.arity == 1
125
+ yield self
126
+ else
127
+ instance_eval &block
128
+ end
129
+ end
130
+ end
131
+ # Metodo que nos permite introducir la edicion del libro
132
+ # @param [edicion] edicion Edicion del libro
133
+
134
+ def edicion(edicion)
135
+ @edicion = edicion
136
+ end
137
+ # Metodo que nos permite introducir el volumen del libro
138
+ # @param [volumen] volumen Volumen del libro
139
+
140
+ def volumen (volumen)
141
+ @volumen = volumen
142
+ end
143
+ # Metodo que nos permite formatear las referencias de los libros
144
+ # @return Cadena de caracteres de la referencia del libro formateado
145
+
146
+ def to_s
147
+ string=""
148
+ string << @autor << " (" << Date::MONTHNAMES[get_publicacion.month] << " " << get_publicacion.day.to_s << ", " << get_publicacion.year.to_s << "). " << @titulo << " (" << @edicion.to_s << ") (" << @volumen.to_s << "). " << @editorial << "."
149
+ end
150
+ end
151
+
152
+ class Periodicas < Referencia
153
+ # Clase que nos permite representar todas las publicaciones periodicas de una referencia
154
+ # @author Rafael Herrero
155
+
156
+ attr_accessor :formato
157
+ # Metodo para insertar el formato, unico atributo en comun en las publicaciones periodicas
158
+ # @param [formato] formato Formato de la publicacion
159
+
160
+ def initialize(formato)
161
+ @formato = formato.capitalize
162
+ end
163
+ end
164
+
165
+ class ArtPeriodico < Periodicas
166
+ # Clase que nos permite representar los articulos periodisticos de una publicacion periodica
167
+ # @author Rafael Herrero
168
+
169
+ attr_accessor :paginas, :formato
170
+ def initialize(formato, &block)
171
+ if block_given?
172
+ if block.arity == 1
173
+ yield self
174
+ else
175
+ instance_eval &block
176
+ end
177
+ end
178
+ super(formato)
179
+ end
180
+ # Metodo que permite insertar el numero de paginas
181
+ # @param [paginas] paginas Numero de paginas del articulo periodistico
182
+
183
+ def paginas (paginas)
184
+ @paginas = paginas
185
+ end
186
+ # Metodo que nos devuelve la referencia del articulo periodistico formateado
187
+ # @return String de la referencia del articulo periodistico formateado
188
+
189
+ def to_s
190
+ string = ""
191
+ string << @autor << " (" << Date::MONTHNAMES[get_publicacion.month] << " " << get_publicacion.day.to_s << ", " << get_publicacion.year.to_s << "). " << @titulo << ". " << @editorial << ", pp. " << @formato << ", " << @paginas.to_s << " paginas" << "."
192
+ end
193
+ end
194
+
195
+ class DocElectronico < Periodicas
196
+ # Clase que nos permite representar los documentos electronicos de una publicacion periodica
197
+ # @author Rafael Herrero
198
+
199
+ attr_accessor :formato, :url, :fechacceso
200
+ def initialize(formato, &block)
201
+ if block_given?
202
+ if block.arity == 1
203
+ yield self
204
+ else
205
+ instance_eval &block
206
+ end
207
+ end
208
+ super(formato)
209
+ end
210
+ # Metodo que permite insertar la edicion
211
+ # @param [edicion] edicion Edicion del documento electronico
212
+
213
+ def edicion(edicion)
214
+ @edicion = edicion
215
+ end
216
+ # Metodo que permite insertar la fecha de acceso al documento
217
+ # @param [fechacceso] fechacceso Fecha de acceso al documento electronico
218
+
219
+ def fechacceso(fechacceso)
220
+ @fechacceso = fechacceso
221
+ end
222
+ # Metodo para almacenar la direccion web del documento electronico
223
+ # @param [url] url Direccion web del documento electronico
224
+
225
+ def url(url)
226
+ @url = url
227
+ end
228
+ # Metodo que nos devuelve la fecha de acceso al documento electronico almacenada
229
+ # @return Fecha de acceso al documento electronico
230
+
231
+ def get_fechacceso
232
+ @fechacceso
233
+ end
234
+ # Metodo que nos devuelve la referencia del documento electronico formateado
235
+ # @return String de la referencia del documento electronico formateado
236
+
237
+ def to_s
238
+ string = ""
239
+ string << @autor << " (" << Date::MONTHNAMES[get_publicacion.month] << " " << get_publicacion.day.to_s << ", " << get_publicacion.year.to_s << "). " << @titulo << @formato << ". " << @editorial << ": " << @edicion << ". Disponible en: " << @url << " (" << Date::MONTHNAMES[get_fechacceso.month] << " " << get_fechacceso.day.to_s << ", " << get_fechacceso.year.to_s << "). "
240
+ end
241
+ end
242
+ end