class Ref::Referencia

Clase Referencia

Attributes

an[RW]

Se tiene acceso de lectura y escritura a todos los atributos

autores[RW]

Se tiene acceso de lectura y escritura a todos los atributos

edic[RW]

Se tiene acceso de lectura y escritura a todos los atributos

edit[RW]

Se tiene acceso de lectura y escritura a todos los atributos

fec[RW]

Se tiene acceso de lectura y escritura a todos los atributos

pa[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

vol[RW]

Se tiene acceso de lectura y escritura a todos los atributos

Public Class Methods

new(titulo, &block) click to toggle source
# File lib/linkedlist/referencia.rb, line 10
def initialize(titulo, &block)
  # Comprobamos tipo
  fail ArgumentError, 'El titulo no es un string' unless titulo.is_a?(String)
  #
  
  #Evaluamos el bloque
  instance_eval &block
  #
  
  #Creamos variables con los valores que recibimos del bloque
  #
  @titulo = @tit
  
  autores = []
  autores.push(@aut)
  
  @pa = @pais
  @an = @anio
  #
  

  # 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, 'El pais no es string o nulo' unless pa.nil? || pa.is_a?(String)
  #

  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 pais
  @pa = @pais
  #

  # Compruebo tipo
  fail ArgumentError, 'Anio debe ser un entero' unless an.is_a?(Integer)
  @fec = Date.new(@an, 1, 1)
  #

  # Asignamos los valores
  @edit = @editorial
  @edic = @edicion
  @vol = @volumen
  #
  
  # Compruebo tipo
  fail ArgumentError, 'La editorial no es una cadena de caracteres' unless edit.is_a?(String)
  fail ArgumentError, 'La edicion no es un entero' unless edic.is_a?(Integer)
  fail ArgumentError, 'El volumen no es un entero' unless vol.is_a?(Integer)
  #
  #Pruebas de creación - Debug
  #puts(@titulo)
  #puts(@autores)
  #puts(@fec)
  #puts(@pa)
  #puts(@an)
  #puts(@edit)
  #puts(@edic)
  #puts(@vol)
  #
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/linkedlist/referencia.rb, line 131
  def <=>(other)
    if @autores == other.autores
      if @fec == other.fec
        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 fec > other.fec
        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
anio(entrada) click to toggle source
# File lib/linkedlist/referencia.rb, line 115
def anio(entrada)
  @anio = entrada
end
author(entrada) click to toggle source

Accesores

# File lib/linkedlist/referencia.rb, line 103
def author(entrada)
  @aut = entrada
end
edicion(entrada) click to toggle source
# File lib/linkedlist/referencia.rb, line 123
def edicion(entrada)
  @edicion = entrada
end
editorial(entrada) click to toggle source
# File lib/linkedlist/referencia.rb, line 119
def editorial(entrada)
  @editorial = entrada
end
pais(entrada) click to toggle source
# File lib/linkedlist/referencia.rb, line 111
def pais(entrada)
  @pais = entrada
end
title(entrada) click to toggle source
# File lib/linkedlist/referencia.rb, line 107
def title(entrada)
  @tit = entrada
end
volumen(entrada) click to toggle source
# File lib/linkedlist/referencia.rb, line 127
def volumen(entrada)
  @volumen = entrada
end