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