doc/csv/options/parsing/header_converters.rdoc

Summary

Maintainability
Test Coverage
====== Option +header_converters+

Specifies converters to be used in parsing headers.
See {Header Converters}[#class-CSV-label-Header+Converters]

Default value:
  CSV::DEFAULT_OPTIONS.fetch(:header_converters) # => nil

Identical in functionality to option {converters}[#class-CSV-label-Option+converters]
except that:
- The converters apply only to the header row.
- The built-in header converters are +:downcase+ and +:symbol+.

This section assumes prior execution of:
  str = <<-EOT
  Name,Value
  foo,0
  bar,1
  baz,2
  EOT
  # With no header converter
  table = CSV.parse(str, headers: true)
  table.headers # => ["Name", "Value"]

The value may be a header converter name
(see {Stored Converters}[#class-CSV-label-Stored+Converters]):
  table = CSV.parse(str, headers: true, header_converters: :downcase)
  table.headers # => ["name", "value"]

The value may be a converter list
(see {Converter Lists}[#class-CSV-label-Converter+Lists]):
  header_converters = [:downcase, :symbol]
  table = CSV.parse(str, headers: true, header_converters: header_converters)
  table.headers # => [:name, :value]

The value may be a \Proc custom converter
(see {Custom Header Converters}[#class-CSV-label-Custom+Header+Converters]):
  upcase_converter = proc {|field| field.upcase }
  table = CSV.parse(str, headers: true, header_converters: upcase_converter)
  table.headers # => ["NAME", "VALUE"]

See also {Custom Header Converters}[#class-CSV-label-Custom+Header+Converters]