Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
require 'rubygems' require 'parse_tree' class Class def arguments(method) # @_args used for caching the values @_args = Hash.new unless @_args unless @_args.has_key?(method) sexp_array = ParseTree.translate(self, method) @_args[method] = self.class.arg_search(sexp_array) end @_args[method] end private def self.arg_search(sexp_array) if sexp_array.shift == :args sexp_array.find_all { |e| e.kind_of?(Symbol) } else sexp_array.each do |node| if node.kind_of?(Array) args = arg_search(node) return args if args end end nil end end end class X def y(a, b, d = 2, e = 'hello world') end def z end def w(alpha, beta, gamma) end end puts X.arguments(:y).inspect puts X.arguments(:z).inspect puts X.arguments(:w).inspect
This paste will be private.
From the Design Piracy series on my blog: