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 19.10.2006 23:17
on 20.10.2006 00:31
On Fri, Oct 20, 2006 at 06:16:54AM +0900, Lyle Johnson 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 20.10.2006 19:26
On 10/19/06, Mauricio Fernandez <mfp@acm.org> wrote:
> http://eigenclass.org/hiki.rb?method+arguments+via+introspection
Thanks, Mauricio! I will check this out too.