https://github.com/candlerb/string19/blob/master/soapbox.rb
It's buggy as hell. I found loads of bugs just in the process of
documenting this. To me this two could imply two things:
- even Ruby's creators, who are extremely bright people, don't understand
their own rules sufficiently to implement them properly. In that case,
what chance do the rest of us have?
- very few people are actually using this functionality, in which case,
what's it doing as a core part of the language?
* Of course, it's very hard to categorise something as a "bug" if you don't
know what the intended behaviour is. Almost all the behaviour given in
string19.rb is undocumented. By that I mean: when I look at the
documentation for String#+, I expect at minimum to be told what it
requires for valid input (i.e. under what circumstances it will raise an
exception), and what the properties of the result are.
If Ruby has any ideas of becoming a standardised language, the ISO and
ANSI committees will laugh down the corridor until all this is formally
specified (and what I have written here doesn't come close)
* Even when I explicitly tag an object as "BINARY", Ruby tells me it's
"ASCII-8BIT". This may seem like a minor issue, but it annoys me
intensely to be contradicted by the language like this, when it is
so blatently wrong. All text is data; the converse is *not* true.
* It solves a non-problem: how to write a program which can juggle multiple
string segments all in different encodings simultaneously. How many
programs do you write like that? And if you do, can't you just have
a wrapper object which holds the string and its encoding?