Parsing Ruby to get info about method signatures?

I’m interested in parsing some Ruby code for the purpose of extracting
information about the method signatures (including argument names and
default argument values). For example, if I had a method like:

def foo(a, b=2, c=3)
  ...
end

I’d like to be able to programmatically determine that I have a method
named “foo”, with arguments “a”, “b” and “c”, with defaults of 2 and 3
for the latter two arguments. (I will use that information about the
method signatures to generate some additional code.)

Does anyone have any experience with this? I looked at the XML
generator for RDoc, but its output doesn’t appear to provide this kind
of information. Ryan’s ParseTree library may do the trick, or worst
case, I could write some kind of custom parsing tool myself. Just
wanted to see if anyone has any thoughts on this.

On Fri, Oct 20, 2006 at 06:16:54AM +0900, Lyle J. wrote:

for the latter two arguments. (I will use that information about the
method signatures to generate some additional code.)
[…]

http://eigenclass.org/hiki.rb?method+arguments+via+introspection

$ ruby method_args.rb csv
CSV::Cell#initialize (data = “”, is_null = false)
CSV::Cell#data ()
CSV.open (path, mode, fs = nil, rs = nil)
CSV.foreach (path, rs = nil)
CSV.read (path, length = nil, offset = nil)
CSV.readlines (path, rs = nil)
CSV.generate (path, fs = nil, rs = nil)
CSV.parse (str_or_readable, fs = nil, rs = nil)
CSV.parse_line (src, fs = nil, rs = nil)
CSV.generate_line (row, fs = nil, rs = nil)
CSV.parse_row (src, idx, out_dev, fs = nil, rs = nil)
CSV.generate_row (src, cells, out_dev, fs = nil, rs = nil)
CSV::Reader.parse (str_or_readable, fs = “,”, rs = nil)
CSV::Reader.create (str_or_readable, fs = “,”, rs = nil)
CSV::Reader#each ()
CSV::Reader#shift ()
CSV::Reader#close ()
CSV::Reader#initialize (dev)
CSV::StringReader#initialize (string, fs = “,”, rs = nil)

On 10/19/06, Mauricio F. [email protected] wrote:

http://eigenclass.org/hiki.rb?method+arguments+via+introspection

Thanks, Mauricio! I will check this out too.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs