In article <1155586728.891984.325110 / i3g2000cwc.googlegroups.com>,
Kenosis <kenosis / gmail.com> wrote:
>
>Phil Tomson wrote:
>> On 8/14/06, Jeff Cohen <cohen.jeff / gmail.com> 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