Get formal parameter names of a method?

Discussion in 'Ruby' started by Jeff Cohen, Aug 14, 2006.

  1. Jeff Cohen

    Jeff Cohen Guest

    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

    --
    Posted via http://www.ruby-forum.com/.
     
    Jeff Cohen, Aug 14, 2006
    #1
    1. Advertising

  2. 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.


    It's not possible without access to the source code or some major
    interpreter patches.

    Kind regards

    robert
     
    Robert Klemme, Aug 14, 2006
    #2
    1. Advertising

  3. On 8/14/06, Jeff Cohen <> wrote:
    > Is there a way to reflect on a method to get the declard names of the
    > parameters?


    Not in this version of Ruby. I don't know if it's planned.

    -austin
    --
    Austin Ziegler * * http://www.halostatue.ca/
    * * http://www.halostatue.ca/feed/
    *
     
    Austin Ziegler, Aug 14, 2006
    #3
  4. Jeff Cohen

    Phil Tomson Guest

    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
     
    Phil Tomson, Aug 14, 2006
    #4
  5. Jeff Cohen

    Kenosis Guest

    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
     
    Kenosis, Aug 14, 2006
    #5
  6. Jeff Cohen

    Phil Tomson Guest

    In article <>,
    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
     
    Phil Tomson, Aug 15, 2006
    #6
  7. Jeff Cohen

    Guest

    On Aug 14, 2006, at 2:16 PM, Jeff Cohen wrote:
    > Is there a way to reflect on a method to get the declard names of the
    > parameters?
    > [...]
    > Is this possible somehow? I feel like it should be, but I can't quite
    > figure it out.


    What is the use case for this sort of thing? Off hand the only reason
    I could see needing this would be for some sort of debugger/ide/
    development
    tool, in which case ParseTree might be a solution.


    Gary Wright
     
    , Aug 15, 2006
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Mysooru

    Unnamed "Formal Parameter"

    Mysooru, Jul 24, 2003, in forum: C++
    Replies:
    3
    Views:
    476
    Mike Wahler
    Jul 24, 2003
  2. Amir  Michail
    Replies:
    2
    Views:
    317
    Terry Reedy
    Aug 10, 2004
  3. John Lenton
    Replies:
    0
    Views:
    389
    John Lenton
    Jan 11, 2005
  4. Roy Smith

    Commented out formal parameter?

    Roy Smith, Nov 21, 2005, in forum: C++
    Replies:
    5
    Views:
    315
    Kaz Kylheku
    Nov 21, 2005
  5. aidy
    Replies:
    2
    Views:
    91
    Kenosis
    Jun 20, 2006
Loading...

Share This Page