class Publicacion::Pub

Clase Publicacion

Attributes

autores[RW]

Se tiene acceso de lectura y escritura a todos los atributos

fecha[RW]

Se tiene acceso de lectura y escritura a todos los atributos

titulo[RW]

Se tiene acceso de lectura y escritura a todos los atributos

Public Class Methods

new(autores, titulo, fecha) click to toggle source
# File lib/linkedlist/publicacion.rb, line 10
def initialize(autores, titulo, fecha)
  # Comprobamos tipo
  fail ArgumentError, 'Autores debe ser 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

  @autores = cadena

  # Comprobamos tipos
  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)
  #

  aux2 = titulo.split(/\W+/)
  aux2.each do |aux3|
    if aux3.length > 3
      aux3.capitalize!
    else
      aux3.downcase!
    end
  end

  # Asignamos el titulo formateado
  @titulo = aux2.join(' ')
  #

  # Asignamos fecha
  @fecha = fecha
  #
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/linkedlist/publicacion.rb, line 56
  def <=>(other)
    if @autores == other.autores
      if @fecha == other.fecha
        if @titulo == other.titulo # Iguales
          return 0
        else
          aux = [@titulo, other.titulo]
          aux.sort_by!(&:downcase)
          return -1 if aux.first == @titulo
          return 1
          end
      elsif fecha > other.fecha
        return 1
      else
        return -1
      end
    else
      aux = [@autores, other.autores]
      aux.sort_by!(&:downcase)
      return 1 if aux.first == @autores
      return -1
      end
end