[ruby-list:50360] Re: CSV のコンバーターが nil に対して効かない
From:
okkez <okkez000@...>
Date:
2016-07-26 00:12:26 UTC
List:
ruby-list #50360
okkez です。
変わったのは↓のコミットみたいですね。
https://github.com/ruby/ruby/commit/7c4d4e1eb2897cec295ea9316835fc3cfef96d6d
どこかでレポートされて直したらしいですが、どこでレポートされたのかまではわかりませんでした。
2016年7月25日 21:52 5.5 <5.5@moji.gr.jp>:
> 5.5 です。
>
> CSV のコンバーターの仕様が Ruby 2.1 → 2.2 で変わったんで
> しょうか?
>
> ダブルクオートで囲まれてない空フィールドを nil じゃなくて
> 空文字列にするため,いままで
>
> ->(s){s.to_s}
>
> というコンバーターを使ってきました。
> ところが,Ruby 2.2, 2.3, では,そもそも nil に対しては
> コンバーターが働かないようで,nil のままになります。
>
> 再現コードは以下の通りです。
>
> require "csv"
>
> CSV.new(",foo", converters: ->(s){s.to_s}).each do |row|
> p row
> end
>
> これで,
>
> ruby 2.1.7p400 (2015-08-18 revision 51632) [i386-mingw32]
>
> だと
>
> ["", "foo"]
>
> になりますが,
>
> ruby 2.2.5p319 (2016-04-26 revision 54774) [i386-mingw32]
>
> だと
>
> [nil, "foo"]
>
> になっちゃいます。
>
> 公式リファンレスマニュアルを見ても,とくにこのあたりの仕様
> 変更についての記述が見当たりませんでした。
> Ruby 2.2.0 のリリースノート
> https://www.ruby-lang.org/ja/news/2014/12/25/ruby-2-2-0-released/
> や NEWS
> https://github.com/ruby/ruby/blob/v2_2_0/NEWS
> にも「CSV」の文字が見当たりませんでした。
>
> --
> 5.5@moji.gr.jp
--
okkez
okkez000@gmail.com