class BiblioRefs::Referencia

Clase que representa una referencia bibliográfica estándar y de la que heredan el resto de clases

Attributes

autores[RW]
editorial[RW]
fecha_publicacion[RW]
isbn[RW]
num_edicion[RW]
serie[RW]
titulo[RW]

Public Class Methods

crear(&block) click to toggle source

Método que crea un objeto de la clase hija que lo llame Se utiliza para crear un objeto y llamar a los métodos que asignarán valores a sus atributos.

# File lib/biblio_refs/referencia.rb, line 13
def self.crear(&block)
  if self == BiblioRefs::Libro
    nuevo = self.new(nil, nil, nil, nil, nil, nil)
  elsif self == BiblioRefs::ArticuloRevista
    nuevo = self.new(nil, nil, nil, nil, nil, nil, nil, nil, nil)
  elsif self == BiblioRefs::ArticuloPeriodico
    nuevo = self.new(nil, nil, nil, nil, nil)
  elsif self == BiblioRefs::DocumentoElectronico
    nuevo = self.new(nil, nil, nil, nil, nil, nil, nil, nil)
  else
    puts "No funciona NADA."
  end
  nuevo.instance_eval &block
  nuevo
end
new(autores, titulo, serie = nil, editorial, num_edicion, fecha_publicacion, isbn) click to toggle source

Constructor de la clase madre

# File lib/biblio_refs/referencia.rb, line 30
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

Public Instance Methods

<=>(ref) click to toggle source

Método para definir cómo se comparan los objetos de la jerarquía de clases.

# File lib/biblio_refs/referencia.rb, line 142
def <=>(ref)
  if ref.is_a?BiblioRefs::Referencia
    if(@autores.kind_of?(Array) && ref.autores.kind_of?(Array))
      if((@autores[0] <=> ref.autores[0]) == 0)
        if((@fecha_publicacion <=> ref.fecha_publicacion) == 0)
          @titulo <=> ref.titulo
        else
          @fecha_publicacion <=> ref.fecha_publicacion
        end
      else
        @autores[0] <=> ref.autores[0]
      end
    else
      if(@autores.kind_of?(Array) && !ref.autores.kind_of?(Array))
        if((@autores[0] <=> ref.autores) == 0)
          if((@fecha_publicacion <=> ref.fecha_publicacion) == 0)
            @titulo <=> ref.titulo
          else
            @fecha_publicacion <=> ref.fecha_publicacion
          end
        else
          @autores[0] <=> ref.autores
        end
      else
        if(!@autores.kind_of?(Array) && ref.autores.kind_of?(Array))
          if((@autores <=> ref.autores[0]) == 0)
            if((@fecha_publicacion <=> ref.fecha_publicacion) == 0)
              @titulo <=> ref.titulo
            else
              @fecha_publicacion <=> ref.fecha_publicacion
            end
          else
            @autores <=> ref.autores[0]
          end
        else
          if((@autores <=> ref.autores) == 0)
            if((@fecha_publicacion <=> ref.fecha_publicacion) == 0)
              @titulo <=> ref.titulo
            else
              @fecha_publicacion <=> ref.fecha_publicacion
            end
          else
            @autores <=> ref.autores
          end
        end
      end
    end
  else
    nil
  end
end
==(ref) click to toggle source

Método para comprobar si dos objetos de la jerarquía son iguales.

# File lib/biblio_refs/referencia.rb, line 195
def ==(ref)
  if ref.is_a?Referencia
    self.to_s == ref.to_s
  else
    false
  end
end
autor(autor = {}) click to toggle source

Método para asignar valores al atributo autores cuando se crean los objetos mediante el DSL.

# File lib/biblio_refs/referencia.rb, line 42
def autor(autor = {})
  if @autores == nil
    @autores = "#{autor[:apellido]}, #{autor[:nombre]}"
  elsif @autores.kind_of?Array
    @autores << "#{autor[:apellido]}, #{autor[:nombre]}"
  else
    autores_array = [@autores]
    autores_array << "#{autor[:apellido]}, #{autor[:nombre]}"
    @autores = autores_array
  end
end
autores_to_s() click to toggle source

Método para devolver un String con los autores correctamente formateados.

# File lib/biblio_refs/referencia.rb, line 69
def autores_to_s
  final = ""
  if autores.kind_of?(Array)
    autores.each do |autor|
      final += autor
      final += " & "
    end
    final[-2..-1] = ""
  else
    final += autores
    final += " "
  end
  final.chop
end
editorial_to_s() click to toggle source

Método para devolver un String con la editorial correctamente formateado

# File lib/biblio_refs/referencia.rb, line 97
def editorial_to_s
  editorial.to_s
end
fecha_publicacion_to_s() click to toggle source

Método para devolver un String con la #fecha_publicacion correctamente formateada

# File lib/biblio_refs/referencia.rb, line 107
def fecha_publicacion_to_s
  Date::MONTHNAMES[fecha_publicacion.mon] + " " + fecha_publicacion.day.to_s + ", " + fecha_publicacion.year.to_s
end
info(info = {}) click to toggle source

Método para asignar valores a los atributos editorial, #num_edicion y #fecha_publicacion cuando se crean los objetos mediante el DSL.

# File lib/biblio_refs/referencia.rb, line 62
def info(info = {})
  @editorial = info[:editorial]
  @num_edicion = info[:num_edicion]
  @fecha_publicacion = Date.parse(info[:fecha_publicacion])
end
isbn_to_s() click to toggle source

Método para devolver un String con el ISBN correctamente formateado

# File lib/biblio_refs/referencia.rb, line 112
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() click to toggle source

Método para devolver un String con el #num_edicion correctamente formateado

# File lib/biblio_refs/referencia.rb, line 102
def num_edicion_to_s
  num_edicion.to_s + " edition"
end
serie_to_s() click to toggle source

Método para devolver un String con la serie correctamente formateada

# File lib/biblio_refs/referencia.rb, line 90
def serie_to_s
  if serie != nil
    "(" + serie.to_s + ")"
  end
end
title(titulo = {}) click to toggle source

Método para asignar valores al atributo titulo cuando se crean los objetos mediante el DSL.

# File lib/biblio_refs/referencia.rb, line 56
def title(titulo = {})
  @titulo = titulo
end
titulo_to_s() click to toggle source

Método para devolver un String con el título correctamente formateado

# File lib/biblio_refs/referencia.rb, line 85
def titulo_to_s
  titulo.to_s
end
to_s() click to toggle source

Método #to_s de la clase que agrupa el resto de métodos 'to_s' declarados.

# File lib/biblio_refs/referencia.rb, line 133
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