class RKelly::Visitors::ParentBuilder
Public Instance Methods
build(node)
click to toggle source
# File lib/rkelly/parent_builder.rb, line 5 def build node link_parents node, nil node end
visit_BracketAccessorNode(o)
click to toggle source
# File lib/rkelly/parent_builder.rb, line 98 def visit_BracketAccessorNode(o) [ link_parents(o.value, o), link_parents(o.accessor, o) ] end
visit_DotAccessorNode(o)
click to toggle source
# File lib/rkelly/parent_builder.rb, line 105 def visit_DotAccessorNode(o) link_parents(o.value, o) end
visit_ForInNode(o)
click to toggle source
# File lib/rkelly/parent_builder.rb, line 81 def visit_ForInNode(o) [ link_parents(o.left, o), link_parents(o.right, o), link_parents(o.value, o) ] end
visit_ForNode(o)
click to toggle source
# File lib/rkelly/parent_builder.rb, line 72 def visit_ForNode(o) [ o.init ? link_parents(o.init, o) : nil, o.test ? link_parents(o.test, o) : nil, o.counter ? link_parents(o.counter, o) : nil, link_parents(o.value, o) ] end
visit_TryNode(o)
click to toggle source
# File lib/rkelly/parent_builder.rb, line 89 def visit_TryNode(o) [ link_parents(o.value, o), o.catch_var ? o.catch_var : nil, o.catch_block ? link_parents(o.catch_block, o) : nil, o.finally_block ? link_parents(o.finally_block, o) : nil ] end
Private Instance Methods
link_parents(node, parent)
click to toggle source
# File lib/rkelly/parent_builder.rb, line 110 def link_parents node, parent node.parent = parent # call the visit method to traverse potential subnodes depends on the node class # error if the node is not in the predefined list # raise "No visit method for '#{node.class}'" unless self.respond_to?("visit_#{node.class.name.split(/::/)[-1]}") self.send(:"visit_#{node.class.name.split(/::/)[-1]}", node) end