biblio-refs 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/Guardfile +82 -0
- data/LICENSE.txt +21 -0
- data/README.md +45 -0
- data/README.rdoc +20 -0
- data/Rakefile +12 -0
- data/biblio-refs.gemspec +30 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/coveralls.yml +1 -0
- data/html/BiblioRefs.html +109 -0
- data/html/BiblioRefs/ArticuloPeriodico.html +281 -0
- data/html/BiblioRefs/ArticuloRevista.html +393 -0
- data/html/BiblioRefs/DocumentoElectronico.html +336 -0
- data/html/BiblioRefs/Libro.html +300 -0
- data/html/BiblioRefs/List.html +374 -0
- data/html/BiblioRefs/ListaAPA.html +274 -0
- data/html/BiblioRefs/PublicacionesPeriodicas.html +156 -0
- data/html/BiblioRefs/Referencia.html +889 -0
- data/html/Object.html +117 -0
- data/html/README_rdoc.html +111 -0
- data/html/created.rid +11 -0
- data/html/css/fonts.css +167 -0
- data/html/css/rdoc.css +590 -0
- data/html/fonts/Lato-Light.ttf +0 -0
- data/html/fonts/Lato-LightItalic.ttf +0 -0
- data/html/fonts/Lato-Regular.ttf +0 -0
- data/html/fonts/Lato-RegularItalic.ttf +0 -0
- data/html/fonts/SourceCodePro-Bold.ttf +0 -0
- data/html/fonts/SourceCodePro-Regular.ttf +0 -0
- data/html/images/add.png +0 -0
- data/html/images/arrow_up.png +0 -0
- data/html/images/brick.png +0 -0
- data/html/images/brick_link.png +0 -0
- data/html/images/bug.png +0 -0
- data/html/images/bullet_black.png +0 -0
- data/html/images/bullet_toggle_minus.png +0 -0
- data/html/images/bullet_toggle_plus.png +0 -0
- data/html/images/date.png +0 -0
- data/html/images/delete.png +0 -0
- data/html/images/find.png +0 -0
- data/html/images/loadingAnimation.gif +0 -0
- data/html/images/macFFBgHack.png +0 -0
- data/html/images/package.png +0 -0
- data/html/images/page_green.png +0 -0
- data/html/images/page_white_text.png +0 -0
- data/html/images/page_white_width.png +0 -0
- data/html/images/plugin.png +0 -0
- data/html/images/ruby.png +0 -0
- data/html/images/tag_blue.png +0 -0
- data/html/images/tag_green.png +0 -0
- data/html/images/transparent.png +0 -0
- data/html/images/wrench.png +0 -0
- data/html/images/wrench_orange.png +0 -0
- data/html/images/zoom.png +0 -0
- data/html/index.html +129 -0
- data/html/js/darkfish.js +161 -0
- data/html/js/jquery.js +4 -0
- data/html/js/navigation.js +142 -0
- data/html/js/navigation.js.gz +0 -0
- data/html/js/search.js +109 -0
- data/html/js/search_index.js +1 -0
- data/html/js/search_index.js.gz +0 -0
- data/html/js/searcher.js +228 -0
- data/html/js/searcher.js.gz +0 -0
- data/html/table_of_contents.html +284 -0
- data/lib/biblio_refs.rb +9 -0
- data/lib/biblio_refs/articulo_periodico.rb +32 -0
- data/lib/biblio_refs/articulo_revista.rb +60 -0
- data/lib/biblio_refs/documento_electronico.rb +42 -0
- data/lib/biblio_refs/libro.rb +37 -0
- data/lib/biblio_refs/list.rb +61 -0
- data/lib/biblio_refs/lista_apa.rb +41 -0
- data/lib/biblio_refs/publicaciones_periodicas.rb +10 -0
- data/lib/biblio_refs/referencia.rb +204 -0
- data/lib/biblio_refs/version.rb +3 -0
- metadata +221 -0
data/lib/biblio_refs.rb
ADDED
@@ -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,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
|