Class: Sheetah::Headers

Inherits:
Object
  • Object
show all
Includes:
Utils::MonadicResult
Defined in:
lib/sheetah/headers.rb

Defined Under Namespace

Classes: Header

Constant Summary

Constants included from Utils::MonadicResult

Utils::MonadicResult::Unit

Instance Method Summary collapse

Methods included from Utils::MonadicResult

#Do, #Failure, #Success

Constructor Details

#initialize(specification:, messenger:) ⇒ Headers

Returns a new instance of Headers.



31
32
33
34
35
36
37
# File 'lib/sheetah/headers.rb', line 31

def initialize(specification:, messenger:)
  @specification = specification
  @messenger = messenger
  @headers = []
  @columns = Set.new
  @failure = false
end

Instance Method Details

#add(header) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/sheetah/headers.rb', line 39

def add(header)
  @messenger.scope_col!(header.col) do
    column = @specification.get(header.value)

    return unless add_ensure_column_is_specified(header, column)
    return unless add_ensure_column_is_unique(header, column)

    @headers << Header.new(header, column)
  end
end

#resultObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/sheetah/headers.rb', line 50

def result
  missing_columns = @specification.required_columns - @columns.to_a

  unless missing_columns.empty?
    @failure = true

    missing_columns.each do |column|
      @messenger.error(
        Messaging::Messages::MissingColumn.new(code_data: { value: column.header })
      )
    end
  end

  if @failure
    Failure()
  else
    Success(@headers)
  end
end