まつもと ゆきひろです

In message "[ruby-dev:6748] Is squeeze cursed?"
    on 99/05/10, akendo / t3.rim.or.jp <akendo / t3.rim.or.jp> writes:

|遠藤です。いつもお世話になっています。連休来のマニュアルと
|の格闘がほぼ終わりに近づきました。少しずつソースに挑戦中で
|すが、奥は深い。年を取ったせいか、はたまた昔からか、勘違い
|が多いので、苦労しています。Ruby本が待ち遠しい。

すいません.マニュアルと実体の間に差異があるのもかなりまずい
問題ですよね.

|squeeze関連で不具合があるようです。
|
|tr_squeezeの文字をコピーするところが、ただコピーしても
|modify=1になってしまっています。したがって、文字列に
|変更がない時にsqueeze!がnilを返しません。

確かに.修正します.

|次はこれとは無関係で、tr_s関連です。
|tr_sは、下請けをtr_transにやらせていますが、squeezeを変換と
|一緒にやるところで参照しているテーブルが、tr_s(from, to)の
|fromの文字からtoへの変換表になっているので、残念ながらtoの
|情報を引き出せなくなっています。toの表も作ってやらないと
|うまくいかないようです。

えーと,これはマニュアルには 

  簡便のため,str.tr(src,repl).squeeze(repl)に相当するメソッ
  ドtr_s(src,repl),が提供されています.

と書いてありますが,これは実は間違いです.tr_sはPerl(やtrの)
tr///sに相当するもので,これはこの動作が仕様です.マニュアル
の方を訂正します.

ただ,現状のtr_sは否定の場合にそれでも説明のできない挙動があ
り,これはバグだと思います.これは修正しないと.

|jcode.rbのtr_sでは、fromが^で始まらない場合は、変換した時
|だけsqueezeし、変換されなかったtoの文字がsqueezeから外れて
|しまっています。
|また、^で始まる時は、変換だけ行って、squeezeが行われていま
|せん。

これはjcodeのバグですね.直しておきます.