Class: Csvtool::Interface::CLI::Prompts::ColumnSelectorPrompt

Inherits:
Object
  • Object
show all
Defined in:
lib/csvtool/interface/cli/prompts/column_selector_prompt.rb

Instance Method Summary collapse

Constructor Details

#initialize(stdin:, stdout:, errors:) ⇒ ColumnSelectorPrompt

Returns a new instance of ColumnSelectorPrompt.



8
9
10
11
12
# File 'lib/csvtool/interface/cli/prompts/column_selector_prompt.rb', line 8

def initialize(stdin:, stdout:, errors:)
  @stdin = stdin
  @stdout = stdout
  @errors = errors
end

Instance Method Details

#call(headers) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/csvtool/interface/cli/prompts/column_selector_prompt.rb', line 14

def call(headers)
  @stdout.print "Filter columns (optional): "
  filter = @stdin.gets&.strip.to_s

  filtered_headers = select_headers(headers, filter)
  return nil if filtered_headers.empty?

  @stdout.puts "Select column:"
  filtered_headers.each_with_index do |header, index|
    @stdout.puts "#{index + 1}. #{header}"
  end
  @stdout.print "Column number: "

  selected_header = filtered_headers[@stdin.gets&.strip.to_i - 1]
  return selected_header if selected_header

  @errors.column_not_found
  nil
end