class Method
def where
to_s =~ /#<Method: ([\w:]+)(\(([\w:]+)\))?#/
if $3
name = $3
else
name = $1
end
name.split("::").inject(Object){|o,s|o.const_get(s)}
end
end
module Foo
module Rubymod
def m
end
end
end
module Bar
class Rubyco
include Foo::Rubymod
def c
end
end
end
r = Bar::Rubyco.new
p r.method(:m).where #=> Foo::Rubymod
p r.method(:c).where #=> Bar::Rubyco
最近のキーワード
A500 AirH" android Annotation cvs cygwin DSL Eclipse Flash flex git Gizmo HTC Desire Huawei ICONIA java javascript Linux metadata moonse NOKIA OpenLaszlo packrat RK1 rockchip ruby RubyKaigi RubyOnRails S11HT Seesaa sourceforge superfroyo SVN tdp4j tdp4js tdp4r thunderbird vaniljeclair vodafone W-ZERO3 Windows X02HT X06HT x11 xml ステップワゴン タグ ホンダ ポーランド記法 携帯 構文解析 納車
2006年11月21日
Method#where
「メソッドがどこで定義されているか」をすこし改良。
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/27963318
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.seesaa.jp/tb/27963318
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック

