Class: Book::Libro

Inherits:
Object
  • Object
show all
Defined in:
lib/linkedlist/libro.rb

Overview

Clase Libro del modulo Book

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#anioObject

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

#autoresObject

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

#edicionObject

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

#editorialObject

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

#fechaObject

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

#paisObject

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

#tituloObject

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

#volumenObject

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_soyObject



87
88
89
90
# File 'lib/linkedlist/libro.rb', line 87

def que_soy
  # Devuelve un texto
  'Soy un Libro'
end