Parent

ParseTreeArray

Constants

R2R

Public Class Methods

translate(*args) click to toggle source
    # File lib/merb-action-args/mri_args.rb, line 7
 7:   def self.translate(*args)
 8:     sexp = ParseTree.translate(*args)
 9:     # ParseTree.translate returns [nil] if called on an inherited method, so walk
10:     # up the inheritance chain to find the class that the method was defined in
11:     unless sexp.first
12:       klass = args.first.ancestors.detect do |klass| 
13:         klass.public_instance_methods(false).include?(args.last.to_s)
14:       end
15:       sexp = ParseTree.translate(klass, args.last) if klass
16:     end
17:     sexp = Unifier.new.process(sexp)
18:     self.new(sexp)
19:   end

Public Instance Methods

arg_nodes() click to toggle source
    # File lib/merb-action-args/mri_args.rb, line 30
30:   def arg_nodes
31:     self[1..1].inject([]) do |sum,item|
32:       sum << [item] unless item.is_a?(Array)
33:       sum
34:     end
35:   end
deep_array_node(type = nil) click to toggle source
    # File lib/merb-action-args/mri_args.rb, line 21
21:   def deep_array_node(type = nil)
22:     each do |node|
23:       return ParseTreeArray.new(node) if node.is_a?(Array) && (!type || node[0] == type)
24:       next unless node.is_a?(Array)
25:       return ParseTreeArray.new(node).deep_array_node(type)
26:     end
27:     nil
28:   end
get_args() click to toggle source
    # File lib/merb-action-args/mri_args.rb, line 37
37:   def get_args
38:     if arg_node = deep_array_node(:args)
39:       # method defined with def keyword
40:       args = arg_node.arg_nodes
41:       default_node = arg_node.deep_array_node(:block)
42:       return [args, []] unless default_node
43:     else
44:       # assuming method defined with Module#define_method
45:       return [[],[]]
46:     end
47:     
48:     # if it was defined with def, and we found the default_node,
49:     # that should bring us back to regularly scheduled programming..
50:     lasgns = default_node[1..1]
51:     lasgns.each do |asgn|
52:       args.assoc(asgn[1]) << eval(R2R.new.process(asgn[2]))
53:     end
54:     [args, (default_node[1..1].map { |asgn| asgn[1] })]
55:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.