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.
- 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
|