From: Nobuyoshi Nakada Date: 2008-01-24T16:52:38+09:00 Subject: [ruby-dev:33351] Re: printf "%0x" なかだです。 At Thu, 24 Jan 2008 15:54:38 +0900, Tanaka Akira wrote in [ruby-dev:33347]: > > test/ruby/test_sprintf.rbには%bのテストしかないのですが、負の値 > > で".."がつかないというのはテストのほうがおかしくないでしょうか。 > > たしかにそんな気もします。 > > ただ、%0x の話はもともと URI の inspect で見つけたもので、そ > こでは .. がつかないことを意図しているようです。 > > 今は > % ./ruby -ruri -e 'p URI("")' > # > というように .. がついてちょっと変なかんじです。 これはKernel#to_sを使えばいいんじゃないですかね。 > まぁ、URI の inspect ではアドレス (ではないけれどそれっぽい > 十六進数) は出さないのがいいんじゃないかという気もしなくはあ > りませんが。 デバッグのときとかには、なんかしら出てくれたほうがありがたいんじゃ ないでしょうか。 Index: lib/uri/generic.rb =================================================================== --- lib/uri/generic.rb (revision 15202) +++ lib/uri/generic.rb (working copy) @@ -1104,6 +1104,7 @@ module URI end + @@to_s = Kernel.instance_method(:to_s) def inspect - sprintf("#<%s:%#0x URL:%s>", self.class.to_s, self.object_id, self.to_s) + @@to_s.bind(self).call.sub!(/>\z/) {" URL:#{self}>"} end -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦