From: ptkwt@... (Phil Tomson) Date: 2006-08-15T08:45:09+09:00 Subject: Re: Get formal parameter names of a method? In article <1155586728.891984.325110@i3g2000cwc.googlegroups.com>, Kenosis wrote: > >Phil Tomson wrote: >> On 8/14/06, Jeff Cohen wrote: >> > Is there a way to reflect on a method to get the declard names of the >> > parameters? >> > >> > class Equipment >> > >> > def install(tool, packaging) >> > end >> > >> > end >> > >> > I can do this: >> > >> > m = Equipment.new.method(:install) >> > m.arity # => 2 >> > >> > I want to somehow find out that the client code has declared the >> > parameters named 'tool' and 'packaging'. >> > >> > Is this possible somehow? I feel like it should be, but I can't quite >> > figure it out. >> > >> > Thanks! >> > Jeff >> > >> >> the only way you could do this now would be to use ParseTree: >> >> http://rubyforge.org/projects/parsetree/ >> >> Maybe there will be a built-in way to do this in 2.0? >> >> Phil >Its a long shot but as a nasty hack you could read the original source >file in and search to locate the "def" of the method and then via a >regex extract the names of the arguments. This would likely be very >slow so you'd probably want to do it once and for all for all methods >of interest. But, as a circular problem, how would you know the names >of the methods of interest in advance? Well, that would have to be an >assumption I suppose. > If you're going to do that you might as well use ParseTree. Phil