biblio-refs 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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