Sha256: db563ae577e6f47f0617c0f4cdee5958f6b15c74aff640448f6c401cb6143b2b
Contents?: true
Size: 1.24 KB
Versions: 2
Compression:
Stored size: 1.24 KB
Contents
# from merb/core_ext/get_args.rb begin require 'ruby2ruby' class ParseTreeArray < Array def self.translate(*args) self.new(ParseTree.translate(*args)) end def deep_array_node(type = nil) each do |node| return ParseTreeArray.new(node) if node.is_a?(Array) && (!type || node[0] == type) next unless node.is_a?(Array) return ParseTreeArray.new(node).deep_array_node(type) end nil end def arg_nodes self[1..-1].inject([]) do |sum,item| sum << [item] unless item.is_a?(Array) sum end end def get_args arg_node = deep_array_node(:args) args = arg_node.arg_nodes default_node = arg_node.deep_array_node(:block) return args unless default_node lasgns = default_node[1..-1] lasgns.each do |asgn| args.assoc(asgn[1]) << eval(RubyToRuby.new.process(asgn[2])) end args end end module GetArgs def get_args klass, meth = self.to_s.split(/ /).to_a[1][0..-2].split("#") klass = $` if klass =~ /\(/ ParseTreeArray.translate(Object.const_get(klass), meth).get_args end end class UnboundMethod include GetArgs end class Method include GetArgs end rescue LoadError end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ramaze-0.2.0 | lib/ramaze/contrib/auto_params/get_args.rb |
ramaze-0.2.1 | lib/ramaze/contrib/auto_params/get_args.rb |