class BiblioRefs::Referencia

Attributes

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

Public Class Methods

new(autores, titulo, serie = nil, editorial, num_edicion, fecha_publicacion, isbn) click to toggle source

Constructor de la clase Referencia

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

Método para crear objetos de la clase Referencia o de sus hijas mediante DSL Recibe un bloque como parámetro

# File lib/biblio_refs/referencia.rb, line 22
def self.nuevo(&block)
  if self == BiblioRefs::Libro
    ref = self.new(nil, nil, nil, nil, nil, nil, nil, nil)
  elsif self == BiblioRefs::Articulo
    ref = self.new(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
  elsif self == BiblioRefs::ArticuloPeriodico
    ref = self.new(nil, nil, nil, nil, nil, nil)
  elsif self == BiblioRefs::DocumentoElectronico
    ref = self.new(nil, nil, nil, nil, nil, nil, nil, nil, nil)
  else
    puts "Error"
  end
  ref.instance_eval &block
  ref
end

Public Instance Methods

<=>(ref) click to toggle source

Método para hacer la clase Referencia comparable

# File lib/biblio_refs/referencia.rb, line 39
def <=> (ref)
  return nil unless ref.is_a? Referencia
  if(@autores.kind_of?(Array) && ref.autores.kind_of?(Array))
    comparar_autores(@autores[0], ref.autores[0], ref)
  elsif(@autores.kind_of?(Array))
    comparar_autores(@autores[0], ref.autores, ref)
  elsif(ref.autores.kind_of?(Array))
    comparar_autores(@autores, ref.autores[0], ref)
  else
    comparar_autores(@autores, ref.autores, ref)
  end
end
==(ref) click to toggle source

Método que sobreescribe las reglas para identificar si dos referencias son iguales

# File lib/biblio_refs/referencia.rb, line 53
def == (ref)
  return nil unless ref.instance_of? Referencia
  self.to_s == ref.to_s
end
author(autor = {}) click to toggle source

Método que define los valores de ‘author’ asignados mediante DSL del objeto Referencia

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

Método que devuelve una cadena de carácteres formateada de los autores

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

Método para comparar dos autores de distinta referencia, si son iguales compara los títulos de la obra y, si estos coinciden, la fecha de publicación.

# File lib/biblio_refs/referencia.rb, line 60
def comparar_autores(autor1, autor2, ref)
  if((autor1 <=> autor2) == 0)
      if((@fecha_publicacion <=> ref.fecha_publicacion) == 0)
        @titulo <=> ref.titulo
      else
        @fecha_publicacion <=> ref.fecha_publicacion
      end
    else
      autor1 <=> autor2
    end
end
editorial_to_s() click to toggle source

Método que devuelve una cadena de carácteres formateada de la editorial

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

Método que devuelve una cadena de carácteres formateada de la fecha de publicación

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

Método que devuelve una cadena de carácteres con formato APA del objeto Referencia

# File lib/biblio_refs/referencia.rb, line 166
def formato_apa
  autores_to_s + " (" + fecha_publicacion_to_s + ")" + ". " + titulo_to_s.capitalize + "."
end
info(informacion = {}) click to toggle source

Método que define los valores de ‘author’ asignados mediante DSL del objeto Referencia

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

Método que devuelve una cadena de carácteres formateada del ISBN

# File lib/biblio_refs/referencia.rb, line 145
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 que devuelve una cadena de carácteres formateada del número de edición

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

Método que devuelve una cadena de carácteres formateada de la serie

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

Método que define los valores de ‘title’ asignados mediante DSL del objeto Referencia

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

Método que devuelve una cadena de carácteres formateada del título

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

Método que devuelve una cadena de carácteres formateada de los objetos de la clase Referencia

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