biblio-refs 0.1.1

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 (81) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/Gemfile +4 -0
  6. data/Guardfile +82 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +45 -0
  9. data/README.rdoc +20 -0
  10. data/Rakefile +12 -0
  11. data/biblio-refs.gemspec +30 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +7 -0
  14. data/coveralls.yml +1 -0
  15. data/html/BiblioRefs.html +109 -0
  16. data/html/BiblioRefs/ArticuloPeriodico.html +281 -0
  17. data/html/BiblioRefs/ArticuloRevista.html +393 -0
  18. data/html/BiblioRefs/DocumentoElectronico.html +336 -0
  19. data/html/BiblioRefs/Libro.html +300 -0
  20. data/html/BiblioRefs/List.html +374 -0
  21. data/html/BiblioRefs/ListaAPA.html +274 -0
  22. data/html/BiblioRefs/PublicacionesPeriodicas.html +156 -0
  23. data/html/BiblioRefs/Referencia.html +889 -0
  24. data/html/Object.html +117 -0
  25. data/html/README_rdoc.html +111 -0
  26. data/html/created.rid +11 -0
  27. data/html/css/fonts.css +167 -0
  28. data/html/css/rdoc.css +590 -0
  29. data/html/fonts/Lato-Light.ttf +0 -0
  30. data/html/fonts/Lato-LightItalic.ttf +0 -0
  31. data/html/fonts/Lato-Regular.ttf +0 -0
  32. data/html/fonts/Lato-RegularItalic.ttf +0 -0
  33. data/html/fonts/SourceCodePro-Bold.ttf +0 -0
  34. data/html/fonts/SourceCodePro-Regular.ttf +0 -0
  35. data/html/images/add.png +0 -0
  36. data/html/images/arrow_up.png +0 -0
  37. data/html/images/brick.png +0 -0
  38. data/html/images/brick_link.png +0 -0
  39. data/html/images/bug.png +0 -0
  40. data/html/images/bullet_black.png +0 -0
  41. data/html/images/bullet_toggle_minus.png +0 -0
  42. data/html/images/bullet_toggle_plus.png +0 -0
  43. data/html/images/date.png +0 -0
  44. data/html/images/delete.png +0 -0
  45. data/html/images/find.png +0 -0
  46. data/html/images/loadingAnimation.gif +0 -0
  47. data/html/images/macFFBgHack.png +0 -0
  48. data/html/images/package.png +0 -0
  49. data/html/images/page_green.png +0 -0
  50. data/html/images/page_white_text.png +0 -0
  51. data/html/images/page_white_width.png +0 -0
  52. data/html/images/plugin.png +0 -0
  53. data/html/images/ruby.png +0 -0
  54. data/html/images/tag_blue.png +0 -0
  55. data/html/images/tag_green.png +0 -0
  56. data/html/images/transparent.png +0 -0
  57. data/html/images/wrench.png +0 -0
  58. data/html/images/wrench_orange.png +0 -0
  59. data/html/images/zoom.png +0 -0
  60. data/html/index.html +129 -0
  61. data/html/js/darkfish.js +161 -0
  62. data/html/js/jquery.js +4 -0
  63. data/html/js/navigation.js +142 -0
  64. data/html/js/navigation.js.gz +0 -0
  65. data/html/js/search.js +109 -0
  66. data/html/js/search_index.js +1 -0
  67. data/html/js/search_index.js.gz +0 -0
  68. data/html/js/searcher.js +228 -0
  69. data/html/js/searcher.js.gz +0 -0
  70. data/html/table_of_contents.html +284 -0
  71. data/lib/biblio_refs.rb +9 -0
  72. data/lib/biblio_refs/articulo_periodico.rb +32 -0
  73. data/lib/biblio_refs/articulo_revista.rb +60 -0
  74. data/lib/biblio_refs/documento_electronico.rb +42 -0
  75. data/lib/biblio_refs/libro.rb +37 -0
  76. data/lib/biblio_refs/list.rb +61 -0
  77. data/lib/biblio_refs/lista_apa.rb +41 -0
  78. data/lib/biblio_refs/publicaciones_periodicas.rb +10 -0
  79. data/lib/biblio_refs/referencia.rb +204 -0
  80. data/lib/biblio_refs/version.rb +3 -0
  81. metadata +221 -0
@@ -0,0 +1,9 @@
1
+ require "biblio_refs/version"
2
+ require "biblio_refs/referencia"
3
+ require "biblio_refs/list"
4
+ require "biblio_refs/publicaciones_periodicas"
5
+ require "biblio_refs/articulo_revista"
6
+ require "biblio_refs/articulo_periodico"
7
+ require "biblio_refs/documento_electronico"
8
+ require "biblio_refs/lista_apa"
9
+ require "biblio_refs/libro"
@@ -0,0 +1,32 @@
1
+ module BiblioRefs
2
+ #Clase para representar referencias bibliográficas de un artículo de periódico.
3
+ #Hereda de PublicacionesPeriodicas.
4
+ class ArticuloPeriodico < PublicacionesPeriodicas
5
+
6
+ attr_accessor :nombre_periodico, :num_paginas
7
+
8
+ #Constructor de la clase ArticuloPeriodico.
9
+ def initialize(autores, fecha_publicacion, titulo, nombre_periodico, num_paginas)
10
+ @autores = autores
11
+ @fecha_publicacion = fecha_publicacion
12
+ @titulo = titulo
13
+ @nombre_periodico = nombre_periodico
14
+ @num_paginas = num_paginas
15
+ end
16
+
17
+ #Método para asignar valores a los atributos nombre_periodico y
18
+ #num_paginas cuando se crean los objetos mediante el DSL.
19
+ def periodico(periodico = {})
20
+ @nombre_periodico = periodico[:nombre_periodico]
21
+ @num_paginas = periodico[:num_paginas]
22
+ end
23
+
24
+ #Método to_s de la clase que agrupa el resto de métodos 'to_s' declarados.
25
+ def to_s
26
+ final = autores_to_s + " (" + fecha_publicacion_to_s + "). "
27
+ final += "\n\t" + titulo_to_s + ". " + nombre_periodico.to_s + ", pp. "
28
+ final += num_paginas.to_s + "."
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,60 @@
1
+ module BiblioRefs
2
+ #Clase para representar referencias bibliográficas de un artículo.
3
+ #Hereda de PublicacionesPeriodicas.
4
+ class ArticuloRevista < PublicacionesPeriodicas
5
+
6
+ attr_accessor :titulo_obra, :paginas, :volumen, :eds
7
+
8
+ #Constructor de la clase ArticuloRevista
9
+ def initialize(autores, titulo, titulo_obra, editorial, num_edicion, fecha_publicacion, volumen, paginas, eds)
10
+ @autores = autores
11
+ @titulo = titulo
12
+ @titulo_obra = titulo_obra
13
+ @editorial = editorial
14
+ @num_edicion = num_edicion
15
+ @fecha_publicacion = fecha_publicacion
16
+ @volumen = volumen
17
+ @paginas = paginas
18
+ @eds = eds
19
+ end
20
+
21
+ #Método para asignar valores a los atributos titulo_obra, paginas, volumen y
22
+ #eds cuando se crean los objetos mediante el DSL.
23
+ def articulo(articulo = {})
24
+ @titulo_obra = articulo[:titulo_obra]
25
+ @paginas = articulo[:paginas]
26
+ @volumen = articulo[:volumen]
27
+ @eds = articulo[:eds]
28
+ end
29
+
30
+ #Método para devolver un String con la fecha_publicacion correctamente formateada
31
+ def fecha_publicacion_to_s
32
+ "(" + fecha_publicacion.year.to_s + "). "
33
+ end
34
+
35
+ #Método para devolver un String con los editores correctamente formateados
36
+ def eds_to_s
37
+ final = ""
38
+ if eds.kind_of?(Array)
39
+ eds.each do |ed|
40
+ final += ed
41
+ final += " & "
42
+ end
43
+ final[-1] = ""
44
+ else
45
+ final += eds
46
+ final += " "
47
+ end
48
+ final.chop
49
+ end
50
+
51
+ #Método to_s de la clase que agrupa el resto de métodos 'to_s' declarados.
52
+ def to_s
53
+ final = autores_to_s + " " + fecha_publicacion_to_s
54
+ final += "\n\t" + titulo_to_s + ". En " + eds_to_s + "(Eds.), "
55
+ final += titulo_obra.to_s + " (" + paginas.to_s + ") " + "(" + num_edicion_to_s + ") "
56
+ final += "(" + volumen.to_s + "). Lugar de publicación: " + editorial_to_s
57
+ end
58
+
59
+ end
60
+ end
@@ -0,0 +1,42 @@
1
+ module BiblioRefs
2
+ #Clase para representar referencias bibliográficas de un documento electrónico.
3
+ #Hereda de PublicacionesPeriodicas.
4
+ class DocumentoElectronico < PublicacionesPeriodicas
5
+
6
+ attr_accessor :tipo_medio, :via, :fecha_acceso
7
+
8
+ #Constructor de la clase.
9
+ def initialize(autores, fecha_publicacion, titulo, num_edicion, tipo_medio, editorial, via, fecha_acceso)
10
+ @autores = autores
11
+ @fecha_publicacion = fecha_publicacion
12
+ @titulo = titulo
13
+ @num_edicion = num_edicion
14
+ @tipo_medio = tipo_medio
15
+ @editorial = editorial
16
+ @via = via
17
+ @fecha_acceso = fecha_acceso
18
+ end
19
+
20
+ #Método para asignar valores a los atributos tipo_medio, via y
21
+ #fecha_acceso cuando se crean los objetos mediante el DSL.
22
+ def documento(documento = {})
23
+ @tipo_medio = documento[:tipo_medio]
24
+ @via = documento[:via]
25
+ @fecha_acceso = Date.parse(documento[:fecha_acceso])
26
+ end
27
+
28
+ #Método para devolver un String con la fecha_acceso correctamente formateada
29
+ def fecha_acceso_to_s
30
+ Date::MONTHNAMES[fecha_publicacion.mon] + " " + fecha_publicacion.day.to_s + ", " + fecha_publicacion.year.to_s
31
+ end
32
+
33
+ #Método to_s de la clase que agrupa el resto de métodos 'to_s' declarados.
34
+ def to_s
35
+ final = autores_to_s + " (" + fecha_publicacion_to_s + "). "
36
+ final += "\n\t" + titulo_to_s + " (" + num_edicion_to_s + "), " + "[" + tipo_medio + "]. "
37
+ final += "Lugar de publicación: " + editorial_to_s + ". Disponible en: " + via.to_s
38
+ final += " [" + fecha_acceso_to_s + "]"
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,37 @@
1
+ module BiblioRefs
2
+ #Clase para representar referencias bibliográficas de libros.
3
+ #Hereda de Referencia.
4
+ class Libro < Referencia
5
+
6
+ attr_accessor :volumen
7
+
8
+ #Constructor de la clase Libro
9
+ def initialize(autores, titulo, editorial, num_edicion, fecha_publicacion, volumen)
10
+ @autores = autores
11
+ @titulo = titulo
12
+ @editorial = editorial
13
+ @num_edicion = num_edicion
14
+ @fecha_publicacion = fecha_publicacion
15
+ @volumen = volumen
16
+ end
17
+
18
+ #Método para asignar valores al atributo volumen cuando se crean
19
+ #los objetos mediante el DSL.
20
+ def libro(libro = {})
21
+ @volumen = libro
22
+ end
23
+
24
+ #Método para devolver un String con la fecha_publicacion correctamente formateada
25
+ def fecha_publicacion_to_s
26
+ "(" + fecha_publicacion.year.to_s + "). "
27
+ end
28
+
29
+ #Método to_s de la clase que agrupa el resto de métodos 'to_s' declarados.
30
+ def to_s
31
+ final = autores_to_s + " " + fecha_publicacion_to_s
32
+ final += "\n\tTítulo del libro: " + titulo_to_s + " (" + num_edicion_to_s + ") "
33
+ final += "(" + volumen.to_s + "). " + "Lugar de publicación: " + editorial_to_s + "."
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,61 @@
1
+ #Se crea un Struct para representar un Nodo con :value y :next
2
+ Nodo = Struct.new(:value, :next, :prev)
3
+
4
+ module BiblioRefs
5
+ #Clase para representar una lista doblemente enlazada.
6
+ class List
7
+ include Enumerable
8
+
9
+ attr_accessor :head, :tail
10
+
11
+ #Constructor de la clase.
12
+ #Recibe un número indefinido de nodos y los añade a la lista.
13
+ def initialize(*nodo)
14
+ @tail = @head = Nodo.new(nodo[0], nil)
15
+ if nodo.size > 1
16
+ nodo.shift
17
+ push(*nodo)
18
+ end
19
+ end
20
+
21
+ #Método para hacer la clase Enumerable.
22
+ #Hace 'yield' a todos los elementos de la lista.
23
+ def each
24
+ aux=@head
25
+ while aux[:next]
26
+ yield aux[:value]
27
+ aux=aux[:next]
28
+ end
29
+ yield aux[:value]
30
+ end
31
+
32
+ #Método que elimina el elemento a la cabeza de la lista y lo devuelve.
33
+ def pop
34
+ nodo = @head
35
+ @head = @head[:next]
36
+ nodo[:value]
37
+ end
38
+
39
+ #Método que añade uno o más nodos a la lista.
40
+ def push(*nodo)
41
+ aux = @head
42
+ nodo.each do |n|
43
+ while aux[:next] do
44
+ aux = aux[:next]
45
+ end
46
+ @tail = aux[:next] = Nodo.new(n, nil, aux)
47
+ end
48
+ end
49
+
50
+ #Método que muestra todos los elementos de la lista correctamente formateados.
51
+ def to_s
52
+ aux = @head
53
+ string = "Lista: "
54
+ while aux[:next] do
55
+ string += "#{aux[:value]}" + " -> "
56
+ aux = aux[:next]
57
+ end
58
+ string += "#{aux[:value]}"
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,41 @@
1
+ module BiblioRefs
2
+ #Clase para representar una lista de referencias en el formato APA.
3
+ class ListaAPA
4
+ attr_accessor :lista
5
+
6
+ #Constructor de la clase.
7
+ def initialize(lista)
8
+ @lista = lista
9
+ ordenar
10
+ end
11
+
12
+ #Método que ordena las referencias de la clase según el criterio del
13
+ #método '<=>' de la clase madre de la jerarquía.
14
+ def ordenar
15
+ array = @lista.sort
16
+ lista_aux = BiblioRefs::List.new(array[0])
17
+ array.shift
18
+ array.each do |ref|
19
+ lista_aux.push(ref)
20
+ end
21
+ @lista = lista_aux
22
+ end
23
+
24
+ #Método que devuelve un String con las referencias de la lista correctamente
25
+ #formateadas.
26
+ def to_s
27
+ class << @lista #Se accede a la eigenclass de @lista para redefinir el método to_s
28
+ def to_s
29
+ aux = @head
30
+ string = ""
31
+ while aux[:next] do
32
+ string += "#{aux[:value]}" + "\n\n"
33
+ aux = aux[:next]
34
+ end
35
+ string += "#{aux[:value]}"
36
+ end
37
+ end
38
+ @lista.to_s
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,10 @@
1
+ module BiblioRefs
2
+ #Clase para representar PublicacionesPeriodicas.
3
+ #De ella heredan las clases que representan Publicaciones Periodicas.
4
+ class PublicacionesPeriodicas < Referencia
5
+
6
+ def initialize
7
+ end
8
+
9
+ end
10
+ end
@@ -0,0 +1,204 @@
1
+ require 'date'
2
+
3
+ module BiblioRefs
4
+ #Clase que representa una referencia bibliográfica estándar y de la que
5
+ #heredan el resto de clases
6
+ class Referencia
7
+ include Comparable
8
+ attr_accessor :autores, :titulo, :serie, :editorial, :num_edicion, :fecha_publicacion, :isbn
9
+
10
+ #Método que crea un objeto de la clase hija que lo llame
11
+ #Se utiliza para crear un objeto y llamar a los métodos
12
+ #que asignarán valores a sus atributos.
13
+ def self.crear(&block)
14
+ if self == BiblioRefs::Libro
15
+ nuevo = self.new(nil, nil, nil, nil, nil, nil)
16
+ elsif self == BiblioRefs::ArticuloRevista
17
+ nuevo = self.new(nil, nil, nil, nil, nil, nil, nil, nil, nil)
18
+ elsif self == BiblioRefs::ArticuloPeriodico
19
+ nuevo = self.new(nil, nil, nil, nil, nil)
20
+ elsif self == BiblioRefs::DocumentoElectronico
21
+ nuevo = self.new(nil, nil, nil, nil, nil, nil, nil, nil)
22
+ else
23
+ puts "No funciona NADA."
24
+ end
25
+ nuevo.instance_eval &block
26
+ nuevo
27
+ end
28
+
29
+ #Constructor de la clase madre
30
+ def initialize(autores, titulo, serie = nil, editorial, num_edicion, fecha_publicacion, isbn)
31
+ @autores = autores
32
+ @titulo = titulo
33
+ @serie = serie
34
+ @editorial = editorial
35
+ @num_edicion = num_edicion
36
+ @fecha_publicacion = fecha_publicacion
37
+ @isbn = isbn
38
+ end
39
+
40
+ #Método para asignar valores al atributo autores cuando se crean los
41
+ #objetos mediante el DSL.
42
+ def autor(autor = {})
43
+ if @autores == nil
44
+ @autores = "#{autor[:apellido]}, #{autor[:nombre]}"
45
+ elsif @autores.kind_of?Array
46
+ @autores << "#{autor[:apellido]}, #{autor[:nombre]}"
47
+ else
48
+ autores_array = [@autores]
49
+ autores_array << "#{autor[:apellido]}, #{autor[:nombre]}"
50
+ @autores = autores_array
51
+ end
52
+ end
53
+
54
+ #Método para asignar valores al atributo titulo cuando se crean
55
+ #los objetos mediante el DSL.
56
+ def title(titulo = {})
57
+ @titulo = titulo
58
+ end
59
+
60
+ #Método para asignar valores a los atributos editorial, num_edicion y
61
+ #fecha_publicacion cuando se crean los objetos mediante el DSL.
62
+ def info(info = {})
63
+ @editorial = info[:editorial]
64
+ @num_edicion = info[:num_edicion]
65
+ @fecha_publicacion = Date.parse(info[:fecha_publicacion])
66
+ end
67
+
68
+ #Método para devolver un String con los autores correctamente formateados.
69
+ def autores_to_s
70
+ final = ""
71
+ if autores.kind_of?(Array)
72
+ autores.each do |autor|
73
+ final += autor
74
+ final += " & "
75
+ end
76
+ final[-2..-1] = ""
77
+ else
78
+ final += autores
79
+ final += " "
80
+ end
81
+ final.chop
82
+ end
83
+
84
+ #Método para devolver un String con el título correctamente formateado
85
+ def titulo_to_s
86
+ titulo.to_s
87
+ end
88
+
89
+ #Método para devolver un String con la serie correctamente formateada
90
+ def serie_to_s
91
+ if serie != nil
92
+ "(" + serie.to_s + ")"
93
+ end
94
+ end
95
+
96
+ #Método para devolver un String con la editorial correctamente formateado
97
+ def editorial_to_s
98
+ editorial.to_s
99
+ end
100
+
101
+ #Método para devolver un String con el num_edicion correctamente formateado
102
+ def num_edicion_to_s
103
+ num_edicion.to_s + " edition"
104
+ end
105
+
106
+ #Método para devolver un String con la fecha_publicacion correctamente formateada
107
+ def fecha_publicacion_to_s
108
+ Date::MONTHNAMES[fecha_publicacion.mon] + " " + fecha_publicacion.day.to_s + ", " + fecha_publicacion.year.to_s
109
+ end
110
+
111
+ #Método para devolver un String con el ISBN correctamente formateado
112
+ def isbn_to_s
113
+ final = ""
114
+ if isbn.kind_of?(Array)
115
+ isbn.each do |num|
116
+ if num.length > 12
117
+ final += "ISBN-13: " + num + "\n"
118
+ else
119
+ final += "ISBN-10: " + num + "\n"
120
+ end
121
+ end
122
+ final.chop
123
+ else
124
+ if isbn.length > 12
125
+ final += "ISBN-13: " + isbn
126
+ else
127
+ final += "ISBN-10: " + isbn
128
+ end
129
+ end
130
+ end
131
+
132
+ #Método to_s de la clase que agrupa el resto de métodos 'to_s' declarados.
133
+ def to_s
134
+ final = autores_to_s + ".\n" + titulo_to_s + "\n"
135
+ if serie != nil
136
+ final += serie_to_s + "\n"
137
+ end
138
+ final += editorial_to_s + "; " + num_edicion_to_s + " (" + fecha_publicacion_to_s + ")\n" + isbn_to_s
139
+ end
140
+
141
+ #Método para definir cómo se comparan los objetos de la jerarquía de clases.
142
+ def <=>(ref)
143
+ if ref.is_a?BiblioRefs::Referencia
144
+ if(@autores.kind_of?(Array) && ref.autores.kind_of?(Array))
145
+ if((@autores[0] <=> ref.autores[0]) == 0)
146
+ if((@fecha_publicacion <=> ref.fecha_publicacion) == 0)
147
+ @titulo <=> ref.titulo
148
+ else
149
+ @fecha_publicacion <=> ref.fecha_publicacion
150
+ end
151
+ else
152
+ @autores[0] <=> ref.autores[0]
153
+ end
154
+ else
155
+ if(@autores.kind_of?(Array) && !ref.autores.kind_of?(Array))
156
+ if((@autores[0] <=> ref.autores) == 0)
157
+ if((@fecha_publicacion <=> ref.fecha_publicacion) == 0)
158
+ @titulo <=> ref.titulo
159
+ else
160
+ @fecha_publicacion <=> ref.fecha_publicacion
161
+ end
162
+ else
163
+ @autores[0] <=> ref.autores
164
+ end
165
+ else
166
+ if(!@autores.kind_of?(Array) && ref.autores.kind_of?(Array))
167
+ if((@autores <=> ref.autores[0]) == 0)
168
+ if((@fecha_publicacion <=> ref.fecha_publicacion) == 0)
169
+ @titulo <=> ref.titulo
170
+ else
171
+ @fecha_publicacion <=> ref.fecha_publicacion
172
+ end
173
+ else
174
+ @autores <=> ref.autores[0]
175
+ end
176
+ else
177
+ if((@autores <=> ref.autores) == 0)
178
+ if((@fecha_publicacion <=> ref.fecha_publicacion) == 0)
179
+ @titulo <=> ref.titulo
180
+ else
181
+ @fecha_publicacion <=> ref.fecha_publicacion
182
+ end
183
+ else
184
+ @autores <=> ref.autores
185
+ end
186
+ end
187
+ end
188
+ end
189
+ else
190
+ nil
191
+ end
192
+ end
193
+
194
+ #Método para comprobar si dos objetos de la jerarquía son iguales.
195
+ def ==(ref)
196
+ if ref.is_a?Referencia
197
+ self.to_s == ref.to_s
198
+ else
199
+ false
200
+ end
201
+ end
202
+
203
+ end
204
+ end