class DwCAContentAnalyzer::FileSet

Attributes

columns[R]

Public Class Methods

new(files, detectors = %i[type length]) click to toggle source
# File lib/dwca_content_analyzer/file_set.rb, line 11
def initialize(files, detectors = %i[type length])
  @detectors = detectors
  @columns = analyze files
end

Private Instance Methods

analyze(files) click to toggle source
# File lib/dwca_content_analyzer/file_set.rb, line 18
def analyze(files)
  consolidate(files.map { |file| columns_for file }.flatten)
end
columns_for(file) click to toggle source
# File lib/dwca_content_analyzer/file_set.rb, line 32
def columns_for(file)
  FileContents.new(file, @detectors).columns
end
common_type(types) click to toggle source
# File lib/dwca_content_analyzer/file_set.rb, line 36
def common_type(types)
  if types.size == 1
    types.first
  elsif types.size == 2 && types.include?(Float) && types.include?(Integer)
    Float
  else
    String
  end
end
consolidate(files) click to toggle source
# File lib/dwca_content_analyzer/file_set.rb, line 22
def consolidate(files)
  files.group_by(&:index).map do |index, column|
    length = column.map(&:length).max
    types = column.map(&:type).uniq
    { index: index,
      length: length,
      type: common_type(types)&.to_s&.underscore }
  end
end