Bug #16957
closedDocumentation example for enum.chunk doesn't match actual output.
Description
I was experimenting with chunk, ruby 2.7.1, using the documentation sample, also 2.7.1:
open("/usr/share/dict/words", "r:iso-8859-1") { |f|
f.chunk { |line| line.ord }.each { |ch, lines| p [ch.chr, lines.length] }
}
#=> ["\n", 1]
# ["A", 1327]
# ["B", 1372]
# ["C", 1507]
# ["D", 791]
# ...
While doing this noticed that my output was significantly different.
#=> ["A", 1]
# ["a", 5]
# ["A", 1]
# ["a", 2]
# ["A", 7]
# ...
I am fairly new to ruby, though not to programming. I played around some and found that by using line.upcase.ord I can get something more like what was expected, minus the '\n'.
open('/usr/share/dict/words', 'r:iso-8859-1') { |f|
f.chunk { |line| line.upcase.ord }.each { |ch, lines| p [ch.chr, lines.length] }
}
#=> ["A", 17096]
# ["B", 11070]
# ["C", 19901]
# ["D", 10896]
This can be fixed by either updating the doc to show the actual output or update the code to make align the output with the code. I have a patch I will attach as I go through the documentation on how to do that in this project.
I also opened a ticket on github, perhaps in error. https://github.com/documenting-ruby/ruby/issues/93
Files
Updated by jeremyevans0 (Jeremy Evans) about 4 years ago
The existing example code assumes the words in /usr/share/dict/word
will be already upcased, which isn't true in your case (MacOS) and looks like it isn't true in my case either (OpenBSD). I think your patch is a good way to handle the issue; I'll merge it shortly.
Updated by jeremyevans (Jeremy Evans) about 4 years ago
- Status changed from Open to Closed
Applied in changeset git|b212c7c7d136dad7391874c5c9ba0b77df5653e2.
Update example code in Enumerator#chunk documentation [ci skip]
The code assumed that /usr/share/dict/words did not use mixed
case, and it does at least on a few operating systems.
From CryptoRAT (Luke Elliot)
Fixes [Bug #16957]