convert(name)
[permalink][rdoc][edit]convert {|field| ... }
convert {|field, field_info| ... }
-
引数 name で指定した変換器かブロックに各フィールドを渡して文字列から別のオブジェクトへと変換します。
引数 name を指定した場合は、組み込みの CSV::Converters を変換器として利用するために使います。また、独自の変換器を追加することもできます。
ブロックパラメータを一つ受け取るブロックを与えた場合は、そのブロックはフィールドを受け取ります。ブロックパラメータを二つ受け取るブロックを与えた場合は、そのブロックは、フィールドと CSV::FieldInfo のインスタンスを受け取ります。ブロックは変換後の値かフィールドそのものを返さなければなりません。
- [PARAM] name:
- 変換器の名前を指定します。
require "csv" csv = CSV.new("date1,date2\n2018-07-09,2018-07-10") csv.convert(:date) csv.read # => [["date1", "date2"], [#<Date: 2018-07-09 ((2458309j,0s,0n),+0s,2299161j)>, #<Date: 2018-07-10 ((2458310j,0s,0n),+0s,2299161j)>]]
require "csv" csv = CSV.new("date1,date2\n2018-07-09,2018-07-10", headers: true) csv.convert do |field,field_info| p field p field_info Date.parse(field) end p csv.first # => "2018-07-09" # => <struct CSV::FieldInfo index=0, line=2, header="date1"> # => "2018-07-10" # => #<struct CSV::FieldInfo index=1, line=2, header="date2"> # => #<CSV::Row "date1":#<Date: 2018-07-09 ((2458309j,0s,0n),+0s,2299161j)> "date2":#<Date: 2018-07-10 ((2458310j,0s,0n),+0s,2299161j)>>
[SEE_ALSO] CSV#converters, CSV#header_convert