Class: CSVModel::HeaderRow

Inherits:
Object
  • Object
show all
Includes:
Utilities::Options
Defined in:
lib/csv_model/header_row.rb

Instance Attribute Summary collapse

Attributes included from Utilities::Options

#options

Instance Method Summary collapse

Methods included from Utilities::Options

#option

Constructor Details

#initialize(data, options = {}) ⇒ HeaderRow

Returns a new instance of HeaderRow.



9
10
11
12
13
# File 'lib/csv_model/header_row.rb', line 9

def initialize(data, options = {})
  @data = data
  @options = options
  validate_options
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



7
8
9
# File 'lib/csv_model/header_row.rb', line 7

def data
  @data
end

Instance Method Details

#column_countObject



19
20
21
# File 'lib/csv_model/header_row.rb', line 19

def column_count
  columns.count
end

#column_index(key) ⇒ Object



23
24
25
# File 'lib/csv_model/header_row.rb', line 23

def column_index(key)
  column_keys.index(key.to_column_key)
end

#columnsObject



15
16
17
# File 'lib/csv_model/header_row.rb', line 15

def columns
  @columns ||= data.collect { |x| Column.new(x) }
end

#errorsObject



27
28
29
# File 'lib/csv_model/header_row.rb', line 27

def errors
  (duplicate_column_errors + illegal_column_errors + missing_column_errors + missing_key_column_errors).uniq
end

#has_column?(key) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/csv_model/header_row.rb', line 31

def has_column?(key)
  !column_index(key).nil?
end

#primary_key_columnsObject



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/csv_model/header_row.rb', line 35

def primary_key_columns
  @primary_key_columns ||= begin
    if has_primary_key? && has_primary_key_columns?
      primary_primary_key_columns
    elsif has_alternate_primary_key? && has_alternate_primary_key_columns?
      alternate_primary_key_columns
    else
      []
    end
  end
end

#valid?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/csv_model/header_row.rb', line 47

def valid?
  has_required_columns? && has_required_key_columns? && !has_duplicate_columns? && !has_illegal_columns?
end