Class: BiblioRefs::Referencia
- Inherits:
-
Object
- Object
- BiblioRefs::Referencia
- Includes:
- Comparable
- Defined in:
- lib/biblio_refs/referencia.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#autores ⇒ Object
Returns the value of attribute autores.
-
#editorial ⇒ Object
Returns the value of attribute editorial.
-
#fecha_publicacion ⇒ Object
Returns the value of attribute fecha_publicacion.
-
#isbn ⇒ Object
Returns the value of attribute isbn.
-
#num_edicion ⇒ Object
Returns the value of attribute num_edicion.
-
#serie ⇒ Object
Returns the value of attribute serie.
-
#titulo ⇒ Object
Returns the value of attribute titulo.
Class Method Summary collapse
-
.nuevo(&block) ⇒ Object
Método para crear objetos de la clase Referencia o de sus hijas mediante DSL Recibe un bloque como parámetro.
Instance Method Summary collapse
-
#<=>(ref) ⇒ Object
Método para hacer la clase Referencia comparable.
-
#==(ref) ⇒ Object
Método que sobreescribe las reglas para identificar si dos referencias son iguales.
-
#author(autor = {}) ⇒ Object
Método que define los valores de ‘author’ asignados mediante DSL del objeto Referencia.
-
#autores_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada de los autores.
-
#comparar_autores(autor1, autor2, ref) ⇒ Object
Método para comparar dos autores de distinta referencia, si son iguales compara los títulos de la obra y, si estos coinciden, la fecha de publicación.
-
#editorial_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada de la editorial.
-
#fecha_publicacion_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada de la fecha de publicación.
-
#formato_apa ⇒ Object
Método que devuelve una cadena de carácteres con formato APA del objeto Referencia.
-
#info(informacion = {}) ⇒ Object
Método que define los valores de ‘author’ asignados mediante DSL del objeto Referencia.
-
#initialize(autores, titulo, serie = nil, editorial, num_edicion, fecha_publicacion, isbn) ⇒ Referencia
constructor
Constructor de la clase Referencia.
-
#isbn_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada del ISBN.
-
#num_edicion_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada del número de edición.
-
#serie_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada de la serie.
-
#title(titulo = {}) ⇒ Object
Método que define los valores de ‘title’ asignados mediante DSL del objeto Referencia.
-
#titulo_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada del título.
-
#to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada de los objetos de la clase Referencia.
Constructor Details
#initialize(autores, titulo, serie = nil, editorial, num_edicion, fecha_publicacion, isbn) ⇒ Referencia
Constructor de la clase Referencia
10 11 12 13 14 15 16 17 18 |
# File 'lib/biblio_refs/referencia.rb', line 10 def initialize(autores, titulo, serie = nil, editorial, num_edicion, fecha_publicacion, isbn) @autores = autores @titulo = titulo @serie = serie @editorial = editorial @num_edicion = num_edicion @fecha_publicacion = fecha_publicacion @isbn = isbn end |
Instance Attribute Details
#autores ⇒ Object
Returns the value of attribute autores.
7 8 9 |
# File 'lib/biblio_refs/referencia.rb', line 7 def autores @autores end |
#editorial ⇒ Object
Returns the value of attribute editorial.
7 8 9 |
# File 'lib/biblio_refs/referencia.rb', line 7 def editorial @editorial end |
#fecha_publicacion ⇒ Object
Returns the value of attribute fecha_publicacion.
7 8 9 |
# File 'lib/biblio_refs/referencia.rb', line 7 def fecha_publicacion @fecha_publicacion end |
#isbn ⇒ Object
Returns the value of attribute isbn.
7 8 9 |
# File 'lib/biblio_refs/referencia.rb', line 7 def isbn @isbn end |
#num_edicion ⇒ Object
Returns the value of attribute num_edicion.
7 8 9 |
# File 'lib/biblio_refs/referencia.rb', line 7 def num_edicion @num_edicion end |
#serie ⇒ Object
Returns the value of attribute serie.
7 8 9 |
# File 'lib/biblio_refs/referencia.rb', line 7 def serie @serie end |
#titulo ⇒ Object
Returns the value of attribute titulo.
7 8 9 |
# File 'lib/biblio_refs/referencia.rb', line 7 def titulo @titulo end |
Class Method Details
.nuevo(&block) ⇒ Object
Método para crear objetos de la clase Referencia o de sus hijas mediante DSL Recibe un bloque como parámetro
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/biblio_refs/referencia.rb', line 22 def self.nuevo(&block) if self == BiblioRefs::Libro ref = self.new(nil, nil, nil, nil, nil, nil, nil, nil) elsif self == BiblioRefs::Articulo ref = self.new(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil) elsif self == BiblioRefs::ArticuloPeriodico ref = self.new(nil, nil, nil, nil, nil, nil) elsif self == BiblioRefs::DocumentoElectronico ref = self.new(nil, nil, nil, nil, nil, nil, nil, nil, nil) else puts "Error" end ref.instance_eval &block ref end |
Instance Method Details
#<=>(ref) ⇒ Object
Método para hacer la clase Referencia comparable
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/biblio_refs/referencia.rb', line 39 def <=> (ref) return nil unless ref.is_a? Referencia if(@autores.kind_of?(Array) && ref.autores.kind_of?(Array)) comparar_autores(@autores[0], ref.autores[0], ref) elsif(@autores.kind_of?(Array)) comparar_autores(@autores[0], ref.autores, ref) elsif(ref.autores.kind_of?(Array)) comparar_autores(@autores, ref.autores[0], ref) else comparar_autores(@autores, ref.autores, ref) end end |
#==(ref) ⇒ Object
Método que sobreescribe las reglas para identificar si dos referencias son iguales
53 54 55 56 |
# File 'lib/biblio_refs/referencia.rb', line 53 def == (ref) return nil unless ref.instance_of? Referencia self.to_s == ref.to_s end |
#author(autor = {}) ⇒ Object
Método que define los valores de ‘author’ asignados mediante DSL del objeto Referencia
73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/biblio_refs/referencia.rb', line 73 def (autor = {}) if @autores == nil @autores = "#{autor[:surname]}, #{autor[:name]}" elsif @autores.kind_of?(Array) @autores << "#{autor[:surname]}, #{autor[:name]}" else arr_autores = [@autores] arr_autores << "#{autor[:surname]}, #{autor[:name]}" @autores = arr_autores end end |
#autores_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada de los autores
102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/biblio_refs/referencia.rb', line 102 def autores_to_s final = "" if autores.kind_of?(Array) autores.each do |autor| final += autor final += " & " end final[-3...-1] = "" else final += autores final += " " end final.chop end |
#comparar_autores(autor1, autor2, ref) ⇒ Object
Método para comparar dos autores de distinta referencia, si son iguales compara los títulos de la obra y, si estos coinciden, la fecha de publicación.
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/biblio_refs/referencia.rb', line 60 def comparar_autores(autor1, autor2, ref) if((autor1 <=> autor2) == 0) if((@fecha_publicacion <=> ref.fecha_publicacion) == 0) @titulo <=> ref.titulo else @fecha_publicacion <=> ref.fecha_publicacion end else autor1 <=> autor2 end end |
#editorial_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada de la editorial
130 131 132 |
# File 'lib/biblio_refs/referencia.rb', line 130 def editorial_to_s editorial.to_s end |
#fecha_publicacion_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada de la fecha de publicación
140 141 142 |
# File 'lib/biblio_refs/referencia.rb', line 140 def fecha_publicacion_to_s Date::MONTHNAMES[fecha_publicacion.mon] + " " + fecha_publicacion.day.to_s + ", " + fecha_publicacion.year.to_s end |
#formato_apa ⇒ Object
Método que devuelve una cadena de carácteres con formato APA del objeto Referencia
166 167 168 |
# File 'lib/biblio_refs/referencia.rb', line 166 def formato_apa autores_to_s + " (" + fecha_publicacion_to_s + ")" + ". " + titulo_to_s.capitalize + "." end |
#info(informacion = {}) ⇒ Object
Método que define los valores de ‘author’ asignados mediante DSL del objeto Referencia
91 92 93 94 95 96 97 98 99 |
# File 'lib/biblio_refs/referencia.rb', line 91 def info(informacion = {}) @serie = informacion[:serie] @editorial = informacion[:editorial] @num_edicion = informacion[:edition] if informacion[:date] @fecha_publicacion = Date.parse(informacion[:date]) end @isbn = informacion[:isbn] end |
#isbn_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada del ISBN
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/biblio_refs/referencia.rb', line 145 def isbn_to_s final = "" if isbn.kind_of?(Array) isbn.each do |num| if num.length > 12 final += "ISBN-13: " + num + "\n" else final += "ISBN-10: " + num + "\n" end end final.chop else if isbn.length > 12 final += "ISBN-13: " + isbn else final += "ISBN-10: " + isbn end end end |
#num_edicion_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada del número de edición
135 136 137 |
# File 'lib/biblio_refs/referencia.rb', line 135 def num_edicion_to_s num_edicion.to_s + " edition" end |
#serie_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada de la serie
123 124 125 126 127 |
# File 'lib/biblio_refs/referencia.rb', line 123 def serie_to_s if serie != nil "(" + serie.to_s + ")" end end |
#title(titulo = {}) ⇒ Object
Método que define los valores de ‘title’ asignados mediante DSL del objeto Referencia
86 87 88 |
# File 'lib/biblio_refs/referencia.rb', line 86 def title(titulo = {}) @titulo = titulo end |
#titulo_to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada del título
118 119 120 |
# File 'lib/biblio_refs/referencia.rb', line 118 def titulo_to_s titulo.to_s end |
#to_s ⇒ Object
Método que devuelve una cadena de carácteres formateada de los objetos de la clase Referencia
171 172 173 174 175 176 177 |
# File 'lib/biblio_refs/referencia.rb', line 171 def to_s final = autores_to_s + ".\n" + titulo_to_s + "\n" if serie != nil final += serie_to_s + "\n" end final += editorial_to_s + "; " + num_edicion_to_s + " (" + fecha_publicacion_to_s + ")\n" + isbn_to_s end |