|
[ruby-list:42090] jcodeのtr_sが正しく動かない: msg#00121lang.ruby.japanese
川本と申します。 ruby 1.8.4で確認したのですが、 jcodeをrequireすると、tr_sが期待通りに動作しないようです。 --- 結果 $ ruby -v ruby 1.8.4 (2005-12-24) [i686-linux] $ ruby -e "p 'foo-bar'.tr_s('-', '_')" "foo_bar" $ ruby -e "require 'jcode'; p 'foo-bar'.tr_s('-', '_')" "foo-bar" --- jcode.rbを見たところ、該当の正規表現が /([#{_regex_quote(from)}])\1+/ となっているため、一文字の '-' にマッチしないようです。 jcode.rbを以下のように修正すると、 上記のケースでは期待通りに動くようになりますが、 これだとマルチバイト文字を全く考慮していないので、 jcode.rbの意図にあっていないと思います。 どのように修正するのが正しいのでしょうか? $ diff -c jcode.rb.original jcode.rb *** jcode.rb.original 2006-04-23 16:51:54.000000000 +0900 --- jcode.rb 2006-04-23 17:03:03.000000000 +0900 *************** *** 175,181 **** def tr_s!(from, to) return self.delete!(from) if to.length == 0 ! pattern = SqueezePatternCache[from] ||= /([#{_regex_quote(from)}])\1+/ if from[0] == ?^ last = /.$/.match(to)[0] self.gsub!(pattern, last) --- 175,181 ---- def tr_s!(from, to) return self.delete!(from) if to.length == 0 ! pattern = SqueezePatternCache[from] ||= /([#{_regex_quote(from)}])+/ if from[0] == ?^ last = /.$/.match(to)[0] self.gsub!(pattern, last) -- Kentaro KAWAMOTO kentaro.kawamoto-Re5JQEeQqe8AvxtiuMwx3w@xxxxxxxxxxxxxxxx
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:42089] Re: [ANN]Miyako v0.6 をリリースいたしました, cyross-+UFAmvbNJgdHfZP73Gtkiw |
|---|---|
| Next by Date: | [ruby-list:42091] Re: ruby/gtk 実行エラー: cairo.so, Takeshi Honda |
| Previous by Thread: | [ruby-list:42088] [ANN]Miyako v0.6 をリリースいたしました, cyross-+UFAmvbNJgdHfZP73Gtkiw |
| Next by Thread: | [ruby-list:42103] Re: jcodeのtr_sが正しく動かない, Hiroshi Ichikawa |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |