2022/05/12 今回の気になった bugs.ruby のチケット
[Bug #18768] Inconsistent behavior of IO, StringIO and String each_line methods when return paragraph and chomp: true passed
- 以下のように
String#each_line
StringIO#each_line
File#each_line
に特定の引数を渡したときの挙動に一貫性がないというバグ報告"", chomp: true
を渡した時- String#each_line (Ruby 3.1 リファレンスマニュアル)
- StringIO#each (Ruby 3.1 リファレンスマニュアル)
- るりまには
chomp
の引数の記述がない…
- るりまには
- IO#each (Ruby 3.1 リファレンスマニュアル)
"a\n\nb\n\nc\n".each_line("", chomp: true).to_a #=> ["a\n", "b\n", "c\n"] StringIO.new("a\n\nb\n\nc\n").each_line("", chomp: true).to_a #=> ["a\n", "b\n", "c"] File.open('chomp.txt').each_line("", chomp: true).to_a #=> ["a", "b", "c\n"]
chomp.txt
の中身
File.read('chomp.txt') #=> "a\n\nb\n\nc\n"
String#each_line
の挙動は以下の通り
# \n で区切りつつ末尾の \n を取り除く p "a\n\nb\n\nc\n".each_line(chomp: true).to_a #=> ["a", "", "b", "", "c"] # `\n\n` 区切りで分割する p "a\n\nb\n\nc\n".each_line("").to_a #=> ["a\n\n", "b\n\n", "c\n"]
- これはどれが期待する挙動になるんですかね…