class GnListResolver::Collector

Assemble data from CSV reader by checking column fields

Attributes

data[R]

Public Class Methods

new(skip_original) click to toggle source
# File lib/gn_list_resolver/collector.rb, line 8
def initialize(skip_original)
  @data = []
  @fields = nil
  @collector = nil
  @skip_original = skip_original
end

Public Instance Methods

process_row(row) click to toggle source
# File lib/gn_list_resolver/collector.rb, line 15
def process_row(row)
  @row = row
  @fields ? collect_data : init_fields_collector
  true
end

Private Instance Methods

collect_data() click to toggle source
# File lib/gn_list_resolver/collector.rb, line 34
def collect_data
  @row = @fields.zip(@row)
  @row_hash = @row.to_h
  data = @collector.id_name_rank(@row_hash)
  return unless data
  data[:original] = prepare_original
  @data << data
end
collector_factory() click to toggle source
# File lib/gn_list_resolver/collector.rb, line 47
def collector_factory
  if @fields.include?(:scientificname)
    SciNameCollector.new(@fields)
  else
    ColumnCollector.new(@fields)
  end
end
init_fields_collector() click to toggle source
# File lib/gn_list_resolver/collector.rb, line 23
def init_fields_collector
  @fields = @row.map { |f| prepare_field(f) }
  @collector = collector_factory
end
prepare_field(field) click to toggle source
# File lib/gn_list_resolver/collector.rb, line 28
def prepare_field(field)
  field = field.to_s.tr(":", "/").delete("\u{feff}")
  return :none if field == ""
  field.split("/")[-1].strip.downcase.to_sym
end
prepare_original() click to toggle source
# File lib/gn_list_resolver/collector.rb, line 43
def prepare_original
  @skip_original ? [@row_hash[:taxonid]].compact : @row.map(&:last)
end