class DLinkedList::Referencia

Referencia bibliográfica básica.

Attributes

autores[R]

Array de autores.

fecha_publicacion[R]

Fecha de publicación.

titulo[R]

Título de la obra.

Public Class Methods

new(&block) click to toggle source

Inicializa la referencia usando el DSL especificado en el bloque block.

# File lib/dLinkedList/dLinkedList.rb, line 23
def initialize(&block)
        instance_eval &block
        raise ArgumentError, "Debe haber al menos un autor" unless @autores.length > 0
end

Public Instance Methods

<=>(c_ref) click to toggle source

Comparación de referencias según los criterios del formato APA.

# File lib/dLinkedList/dLinkedList.rb, line 55
def <=>(c_ref)                        
        ref_ord = @autores[0][:apellidos] <=> c_ref.autores[0][:apellidos]
        if ref_ord == 0 # Primer autor con el mismo apellido
                ref_ord = @autores[0][:nombre] <=> c_ref.autores[0][:nombre]
                if ref_ord == 0 # Mismo primer autor
                        ref_ord = autores_to_s <=> c_ref.autores_to_s
                        if ref_ord == 0 # Mismos autores
                                ref_ord = @fecha_publicacion.year <=> c_ref.fecha_publicacion.year
                                if ref_ord == 0 # Mismos autores y año de publicación
                                        ref_ord = @titulo <=> c_ref.titulo
                                end
                        end
                end                         
        end
        
        return ref_ord
end
to_s() click to toggle source

Devuelve una cadena con el contenido de la referencia en formato APA.

Formato: Apellidos_Autor, Nombre_Autor [& Apellidos_Autor, Nombre_Autor…] (Fecha de publicación). Título.

# File lib/dLinkedList/dLinkedList.rb, line 47
def to_s                      
        s = ''
        s << autores_to_s
        s << "(#{@fecha_publicacion.strftime('%-d/%-m/%Y')}). #{@titulo}."
        return s
end

Protected Instance Methods

autor(autorhash) click to toggle source

Añade un autor a la lista de autores.

# File lib/dLinkedList/dLinkedList.rb, line 29
def autor(autorhash)
        @autores = [] if @autores.nil?
        @autores.push(autorhash)
end
autores_to_s() click to toggle source

Devuelve la lista de autores como cadena.

# File lib/dLinkedList/dLinkedList.rb, line 74
def autores_to_s
        s = ''
        @autores.each() { |a| s << a[:apellidos].capitalize << ', ' << a[:nombre][0].capitalize << ". & "}
        return s.chomp("& ")
end
fecha(fecha_publicacion) click to toggle source

Establece la fecha de publicación.

# File lib/dLinkedList/dLinkedList.rb, line 40
def fecha(fecha_publicacion)
        @fecha_publicacion = Date.strptime(fecha_publicacion, '%d/%m/%Y')
end
tit(titulo) click to toggle source

Establece el título.

# File lib/dLinkedList/dLinkedList.rb, line 35
def tit(titulo)
        @titulo = titulo
end