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