From: Kenosis Date: 2006-08-15T05:20:09+09:00 Subject: Re: Get formal parameter names of a method? 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. Good Luck, Ken