CSVパースの際、コンバータは自前で設定できる。

CSVパースの際、時刻や数値をコンバートできる…というネタを扱いました。
なんと、このコンバータは自前で生成できます。

パラメータはProcクラスで定義されています。

converter = ->(field, field_info) {
 return field.upcase rescue field if field_info.index == 1    
 return field
}

ためしにやってみると…

CSV.parse %(foo, bar, buzz), converters: converter
#=> [["foo", " BAR", " buzz"]]

と、ちゃんと指定カラムが変更されている事が確認できます。
一応、ダメパターンも確認すると…

CSV.parse %(foo, 2, buzz), converters: converter
#=> [["foo", " 2", " buzz"]]