From: Shin'ya Adzumi Date: 2001-09-05T20:27:10+09:00 Subject: [ruby-list:31261] Re: p "123".tr('=-;', ' =−; ') あづみです。 WATANABE Hirofumi wrote: > :jcode.rb ってあんまり使われてないのかなぁ…。 > > 将来ruby_m17nになれば役目は終了するので、あまりいじりたくな > いというか…。 むう。 require 'jcode' しても、String#tr はちゃんと動いて欲しいですね。 しかし、元の String#tr と同じ動きをさせようと思ったらものすごく手を 入れないとダメそう。_expand_ch なんて trnext() と似たようなロジック にしないと実現方法が思い浮かばなかった…。 というか、元の String#tr もなんかちょっと変ですよね。先頭の文字が無条件 に変換する文字に含まれてしまうようで。先頭に \ がくるとダメなような。 '-'.tr('\-]','a-c') # => "-" 直すとしたらこんな感じでしょうか(1.6.4 からの差分)。 安積伸弥 adzumi@denpa.org --- ../../ruby-1.6.4/string.c Sat May 26 00:01:06 2001 +++ string.c Wed Sep 5 20:02:27 2001 @@ -1791,11 +1791,11 @@ for (;;) { if (!t->gen) { if (t->p == t->pend) return -1; - t->now = *(USTR)t->p++; if (t->p < t->pend - 1 && *t->p == '\\') { t->p++; } - else if (t->p < t->pend - 1 && *t->p == '-') { + t->now = *(USTR)t->p++; + if (t->p < t->pend - 1 && *t->p == '-') { t->p++; if (t->p < t->pend) { if (t->now > *(USTR)t->p) {