Class: Csvtool::Infrastructure::CSV::SelectorValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/csvtool/infrastructure/csv/selector_validator.rb

Instance Method Summary collapse

Constructor Details

#initialize(header_reader: HeaderReader.new) ⇒ SelectorValidator

Returns a new instance of SelectorValidator.



10
11
12
# File 'lib/csvtool/infrastructure/csv/selector_validator.rb', line 10

def initialize(header_reader: HeaderReader.new)
  @header_reader = header_reader
end

Instance Method Details

#valid?(profile:, selector:) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/csvtool/infrastructure/csv/selector_validator.rb', line 14

def valid?(profile:, selector:)
  if selector.headers_present?
    headers = @header_reader.call(file_path: profile.path, col_sep: profile.separator)
    return false if headers.empty?

    headers.include?(selector.value)
  else
    first_row = ::CSV.open(profile.path, "r", headers: false, col_sep: profile.separator, &:first)
    return false if first_row.nil?

    selector.value <= first_row.length
  end
end