class RList
Attributes
letter[RW]
Public Class Methods
new(&block)
click to toggle source
# File lib/dsl/ref_list.rb, line 4 def initialize(&block) instance_eval &block end
Public Instance Methods
insert(content)
click to toggle source
# File lib/dsl/ref_list.rb, line 8 def insert(content) insert_h(content) quitarsufijos ordenar_interno end
ordenar_interno()
click to toggle source
# File lib/dsl/ref_list.rb, line 16 def ordenar_interno orden = sort_by{|node| node["value"]} if (orden.count > 1) extract_all for i in 0..orden.count-1 insert_e(orden[i]["value"]) end sufijos end end
quitarsufijos()
click to toggle source
# File lib/dsl/ref_list.rb, line 47 def quitarsufijos aux=@head while aux!=nil aux["value"].p_date=aux["value"].p_date.tr('^0-9', '') aux = aux["next"] end end
salida_funcional()
click to toggle source
# File lib/dsl/ref_list.rb, line 55 def salida_funcional libro = Proc.new{|node| fullnames = "" i=0 while i < node["value"].author_name.count if i != node["value"].author_name.count-1 fullnames= fullnames + "#{node["value"].author_surname[i]}, #{node["value"].author_name[i][0]}. & " else fullnames= fullnames + "#{node["value"].author_surname[i]}, #{node["value"].author_name[i][0]}." end i=i+1 end "#{fullnames} (#{node["value"].p_date}). #{node["value"].title_} (#{node["value"].edit_num}) (#{node["value"].volume}). #{node["value"].p_place}: #{node["value"].p_house}."} libroeditado = Proc.new{|node| editors = "" fullnames = "" i=0 while i < node["value"].author_name.count if i != node["value"].author_name.count-1 fullnames= fullnames + "#{node["value"].author_surname[i]}, #{node["value"].author_name[i][0]}. & " else fullnames= fullnames + "#{node["value"].author_surname[i]}, #{node["value"].author_name[i][0]}." end i=i+1 end i=0 while i < node["value"].editor_name.count if i == node["value"].editor_name.count-1 editors= editors + "#{node["value"].editor_name[i][0]}. #{node["value"].editor_surname[i]}" elsif i == node["value"].editor_name.count-2 editors= editors + "#{node["value"].editor_name[i][0]}. #{node["value"].editor_surname[i]} & " else editors= editors + "#{node["value"].editor_name[i][0]}. #{node["value"].editor_surname[i]}, " end i=i+1 end "#{fullnames} (#{node["value"].p_date}). #{node["value"].title_a}. En #{editors} (comps), #{node["value"].title_} (pp. #{node["value"].page}) (#{node["value"].edit_num}) (#{node["value"].volume}). #{node["value"].p_place}: #{node["value"].p_house}." } periodico= Proc.new{|node| fullnames = "" i=0 while i < node["value"].author_name.count if i != node["value"].author_name.count-1 fullnames= fullnames + "#{node["value"].author_surname[i]}, #{node["value"].author_name[i][0]}. & " else fullnames= fullnames + "#{node["value"].author_surname[i]}, #{node["value"].author_name[i][0]}." end i=i+1 end "#{fullnames} (#{node["value"].p_date}). #{node["value"].title_a}. #{node["value"].title_}, pp. #{node["value"].page}." } edoc= Proc.new{|node| fullnames = "" i=0 while i < node["value"].author_name.count if i != node["value"].author_name.count-1 fullnames= fullnames + "#{node["value"].author_surname[i]}, #{node["value"].author_name[i][0]}. & " else fullnames= fullnames + "#{node["value"].author_surname[i]}, #{node["value"].author_name[i][0]}." end i=i+1 end if node["value"].medium =="En lĂnea" "#{fullnames} (#{node["value"].p_date}). #{node["value"].title_} (#{node["value"].edit_num}), [#{node["value"].medium}]. #{node["value"].p_place}: #{node["value"].p_house}. Disponible en: #{node["value"].url} [#{node["value"].a_date}]." else "#{fullnames} (#{node["value"].p_date}). #{node["value"].title_} (#{node["value"].edit_num}), [#{node["value"].medium}]. #{node["value"].p_place}: #{node["value"].p_house} [#{node["value"].a_date}]." end } aux = @head cadena="" while aux!=nil if aux["next"]!=nil if aux["value"].class.to_s=="Book" cadena= cadena+"#{libro.call(aux)}\n" elsif aux["value"].class.to_s=="EBook" cadena= cadena+"#{libroeditado.call(aux)}\n" elsif aux["value"].class.to_s=="Newspaper" cadena= cadena+"#{periodico.call(aux)}\n" elsif aux["value"].class.to_s=="EDoc" cadena= cadena+"#{edoc.call(aux)}\n" end else if aux["value"].class.to_s=="Book" cadena= cadena+"#{libro.call(aux)}\n" elsif aux["value"].class.to_s=="EBook" cadena= cadena+"#{libroeditado.call(aux)}\n" elsif aux["value"].class.to_s=="Newspaper" cadena= cadena+"#{periodico.call(aux)}\n" elsif aux["value"].class.to_s=="EDoc" cadena= cadena+"#{edoc.call(aux)}\n" end end aux=aux["next"] end cadena end
sufijos()
click to toggle source
# File lib/dsl/ref_list.rb, line 27 def sufijos aux=@head letter="a" while aux!=nil year = aux["value"].p_date while aux["next"]!=nil && aux["value"].author_surname==aux["next"]["value"].author_surname && year==aux["next"]["value"].p_date aux["value"].p_date=aux["value"].p_date + letter year=aux["next"]["value"].p_date aux=aux["next"] letter=letter.next if aux["next"]==nil || (aux["value"].author_surname!=aux["next"]["value"].author_surname && aux["value"].p_date!=aux["next"]["value"].p_date) aux["value"].p_date=aux["value"].p_date + letter end end letter="a" aux = aux["next"] end end
to_s()
click to toggle source
# File lib/dsl/ref_list.rb, line 154 def to_s salida_funcional end