Method: CSV::Row#index

Defined in:
lib/csv/row.rb

#index(header, minimum_index = 0) ⇒ Object

:call-seq:

index(header) -> index
index(header, offset) -> index

Returns the index for the given header, if it exists; otherwise returns nil.

With the single argument header, returns the index of the first-found field with the given header:

source = "Name,Name,Name\nFoo,Bar,Baz\n"
table = CSV.parse(source, headers: true)
row = table[0]
row.index('Name') # => 0
row.index('NAME') # => nil

With arguments header and offset, returns the index of the first-found field with given header, but ignoring the first offset fields:

row.index('Name', 1) # => 1
row.index('Name', 3) # => nil


573
574
575
576
577
578
# File 'lib/csv/row.rb', line 573

def index(header, minimum_index = 0)
  # find the pair
  index = headers[minimum_index..-1].index(header)
  # return the index at the right offset, if we found one
  index.nil? ? nil : index + minimum_index
end