class SiSU_FormatAuthor::Author

Public Class Methods

new(author_param) click to toggle source
# File lib/sisu/html_harvest_author_format.rb, line 57
def initialize(author_param)
  @author_param=author_param
end

Public Instance Methods

author_details() click to toggle source
# File lib/sisu/html_harvest_author_format.rb, line 60
def author_details
  @authors,@author_array=[],[]
  authors=@author_param.scan(/[^;]+/)
  authors.each do |a|
    a=a.strip
    if a =~/"(.+?)"/
      @authors << { the: $1 }
      @author_array << $1.upcase
    else #if a =~/,/
      x=a.scan(/[^,]+/)
      x[0]=x[0].strip
      x[1]=x[1].strip if x[1]
      if x.length==1
        @authors << { the: x[0] }
        @author_array << x[0].upcase
      elsif x.length==2
        @authors << { the: x[0], others: x[1] }
        @author_array << "#{x[0].upcase}, #{x[1]}"
      else #p x.length
      end
    end
  end
  l = @authors.length
  authors_string=''
  @authors.each_with_index do |a,i|
    authors_string += if a[:others]
      if (l - i) > 1
        "#{a[:others]} #{a[:the]}, "
      else
        "#{a[:others]} #{a[:the]}"
      end
    else
      if (l - i) > 2
        "#{a[:the]}, "
      else
        "#{a[:the]}"
      end
    end
  end
  {
    last_first_a: authors,
    last_first_format_a: @author_array,
    authors_h: @authors,
    authors_s: authors_string,
    authors_param: @author_param
  }
end