From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2006-07-19T19:24:04+09:00 Subject: [ruby-dev:29077] Re: irb completion けいじゅ@いしつかです. In [ruby-dev:29074] the message: "[ruby-dev:29074] Re: irb completion", on Jul/19 18:03(JST) 石塚圭樹 writes: >> * クラスにnameという名前のクラスメソッドが定義されていた場 >> 合に、irb全体がエラー終了してしまう。 >> nameじゃなくてto_sを使ったほ >> うがいいんじゃないかなあ。石塚さん担当。 > >うーん. to_sが再定義されている可能性のほうがより少ないことは認めます >が... やりたいことは, あるクラス名のメソッドを省きたいだけで, それらのクラス はnameが再定義されていることはない. to_sも再定義される可能性はなくはな い. ということで, ryanさんのものをruby1.9系でも動くようにしたものにし ようと思います. つまり: # func1.func2 candidates = [] ObjectSpace.each_object(Module){|m| begin name = m.name rescue Exception name = "" end next if name != "IRB::Context" and /^(IRB|SLex|RubyLex|RubyToken)/ =~ name candidates.concat m.instance_methods(false) } candidates.sort! candidates.uniq! いかがでしょう? __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<---