Class: Book::Libro
- Inherits:
-
Object
- Object
- Book::Libro
- Defined in:
- lib/linkedlist/libro.rb
Overview
Clase Libro del modulo Book
Instance Attribute Summary collapse
-
#anio ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos.
-
#autores ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos.
-
#edicion ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos.
-
#editorial ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos.
-
#fecha ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos.
-
#pais ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos.
-
#titulo ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos.
-
#volumen ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#initialize(autores, titulo, fecha, pais = nil, anio, editorial, edicion, volumen) ⇒ Libro
constructor
A new instance of Libro.
- #que_soy ⇒ Object
Constructor Details
#initialize(autores, titulo, fecha, pais = nil, anio, editorial, edicion, volumen) ⇒ Libro
Returns a new instance of Libro.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/linkedlist/libro.rb', line 10 def initialize(autores, titulo, fecha, pais = nil, anio, editorial, edicion, volumen) fail ArgumentError, 'Autores no es un Array' unless autores.is_a?(Array) cadena = '' autores.each do |au| fail ArgumentError, 'Uno de los autores no es un string' unless au.is_a?(String) fail ArgumentError, 'Se especifica unicamente el nombre o el apellido' unless au.split(/\W+/).length > 1 aux = au.split(/\W+/) cadena += aux[1] cadena += ', ' unless aux[2].nil? cadena += aux[2][0] cadena += '. ' end cadena += aux[0][0] cadena += '.' cadena += ' & ' unless au == autores.last end fail ArgumentError, 'El titulo no es un string' unless titulo.is_a?(String) fail ArgumentError, 'La fecha no es de tipo Date' unless fecha.is_a?(Date) fail ArgumentError, 'El pais no es string o nulo' unless pais.nil? || pais.is_a?(String) @autores = cadena aux2 = titulo.split(/\W+/) aux2.each do |aux3| if aux3.length > 3 aux3.capitalize! else aux3.downcase! end end @titulo = aux2.join(' ') @fecha = fecha @pais = pais #ComprobaciĆ³n de tipo fail ArgumentError, 'Anio debe ser un entero' unless anio.is_a?(Integer) fecha = Date.new(anio, 1, 1) fail ArgumentError, 'La editorial no es una cadena de caracteres' unless editorial.is_a?(String) fail ArgumentError, 'La edicion no es un entero' unless edicion.is_a?(Integer) fail ArgumentError, 'El volumen no es un entero' unless volumen.is_a?(Integer) # #AsignaciĆ³n de valores @editorial = editorial @edicion = edicion @volumen = volumen # end |
Instance Attribute Details
#anio ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos
9 10 11 |
# File 'lib/linkedlist/libro.rb', line 9 def anio @anio end |
#autores ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos
9 10 11 |
# File 'lib/linkedlist/libro.rb', line 9 def autores @autores end |
#edicion ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos
9 10 11 |
# File 'lib/linkedlist/libro.rb', line 9 def edicion @edicion end |
#editorial ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos
9 10 11 |
# File 'lib/linkedlist/libro.rb', line 9 def editorial @editorial end |
#fecha ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos
9 10 11 |
# File 'lib/linkedlist/libro.rb', line 9 def fecha @fecha end |
#pais ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos
9 10 11 |
# File 'lib/linkedlist/libro.rb', line 9 def pais @pais end |
#titulo ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos
9 10 11 |
# File 'lib/linkedlist/libro.rb', line 9 def titulo @titulo end |
#volumen ⇒ Object
Se tiene acceso de lectura y escritura a todos los atributos
9 10 11 |
# File 'lib/linkedlist/libro.rb', line 9 def volumen @volumen end |
Instance Method Details
#<=>(other) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/linkedlist/libro.rb', line 63 def <=>(other) if @autores == other.autores if @fecha == other.fecha if @titulo == other.titulo #Iguales return 0 else vector = [@titulo, other.titulo] vector.sort_by!(&:downcase) return -1 if vector.first == @titulo return 1 end elsif fecha > other.fecha return 1 else return -1 end else vector = [@autores, other.autores] vector.sort_by!(&:downcase) return 1 if vector.first == @autores return -1 end end |
#que_soy ⇒ Object
87 88 89 90 |
# File 'lib/linkedlist/libro.rb', line 87 def que_soy # Devuelve un texto 'Soy un Libro' end |