Class: Csvtool::Interface::CLI::Workflows::Steps::Extraction::CollectInputsStep

Inherits:
Object
  • Object
show all
Defined in:
lib/csvtool/interface/cli/workflows/steps/extraction/collect_inputs_step.rb

Instance Method Summary collapse

Constructor Details

#initialize(file_path_prompt:, separator_prompt:, column_selector_prompt:, skip_blanks_prompt:) ⇒ CollectInputsStep

Returns a new instance of CollectInputsStep.



10
11
12
13
14
15
# File 'lib/csvtool/interface/cli/workflows/steps/extraction/collect_inputs_step.rb', line 10

def initialize(file_path_prompt:, separator_prompt:, column_selector_prompt:, skip_blanks_prompt:)
  @file_path_prompt = file_path_prompt
  @separator_prompt = separator_prompt
  @column_selector_prompt = column_selector_prompt
  @skip_blanks_prompt = skip_blanks_prompt
end

Instance Method Details

#call(context) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/csvtool/interface/cli/workflows/steps/extraction/collect_inputs_step.rb', line 17

def call(context)
  file_path = @file_path_prompt.call
  col_sep = @separator_prompt.call
  return :halt if col_sep.nil?

  header_result = context.fetch(:use_case).read_headers(file_path: file_path, col_sep: col_sep)
  unless header_result.ok?
    context.fetch(:handle_error).call(header_result)
    return :halt
  end

  headers = header_result.data[:headers]
  column_name = @column_selector_prompt.call(headers)
  return :halt if column_name.nil?

  skip_blanks = @skip_blanks_prompt.call
  context[:session] = context.fetch(:session_builder).call(
    file_path: file_path,
    col_sep: col_sep,
    column_name: column_name,
    skip_blanks: skip_blanks
  )
  nil
end