public class InstanceVariableFinder extends AbstractNodeVisitor<Void>
Node node = getNodeFromSomewhere();
InstanceVariableFinder finder = new InstanceVariableFinder();
node.accept(finder);
System.out.println("found: " + finder.getFoundVariables);
Constructor and Description |
---|
InstanceVariableFinder() |
Modifier and Type | Method and Description |
---|---|
protected Void |
defaultVisit(Node iVisited) |
static Set<String> |
findVariables(Node node)
Walk a node and its children looking for instance variables using a new
InstanceVariableFinder.
|
Set<String> |
getFoundVariables()
Return the Set of all instance variables found during walking.
|
Void |
visitClassNode(ClassNode iVisited)
ClassNode creates a new scope and self, so do not search for ivars.
|
Void |
visitInstAsgnNode(InstAsgnNode iVisited)
Add the name of the instance variable being assigned to our set of
instance variable names and continue to walk child nodes.
|
Void |
visitInstVarNode(InstVarNode iVisited)
Add the name of the instance variable being retrieved to our set of
instance variable names and continue to walk child nodes.
|
Void |
visitModuleNode(ModuleNode iVisited)
ModuleNode creates a new scope and self, so do not search for ivars.
|
Void |
visitPostExeNode(PostExeNode iVisited)
PostExeNode can't appear in methods, so do not search for ivars.
|
Void |
visitPreExeNode(PreExeNode iVisited)
PreExeNode can't appear in methods, so do not search for ivars.
|
visitAliasNode, visitAndNode, visitArgsCatNode, visitArgsNode, visitArgsPushNode, visitArgumentNode, visitArrayNode, visitAttrAssignNode, visitBackRefNode, visitBeginNode, visitBignumNode, visitBlockArgNode, visitBlockNode, visitBlockPassNode, visitBreakNode, visitCallNode, visitCaseNode, visitChildren, visitClassVarAsgnNode, visitClassVarDeclNode, visitClassVarNode, visitColon2Node, visitColon3Node, visitComplexNode, visitConstDeclNode, visitConstNode, visitDAsgnNode, visitDefinedNode, visitDefnNode, visitDefsNode, visitDotNode, visitDRegxNode, visitDStrNode, visitDSymbolNode, visitDVarNode, visitDXStrNode, visitEncodingNode, visitEnsureNode, visitEvStrNode, visitFalseNode, visitFCallNode, visitFirstChild, visitFixnumNode, visitFlipNode, visitFloatNode, visitForNode, visitGlobalAsgnNode, visitGlobalVarNode, visitHashNode, visitIfNode, visitIterNode, visitKeywordArgNode, visitKeywordRestArgNode, visitLambdaNode, visitListNode, visitLiteralNode, visitLocalAsgnNode, visitLocalVarNode, visitMatch2Node, visitMatch3Node, visitMatchNode, visitMultipleAsgnNode, visitMultipleAsgnNode, visitNewlineNode, visitNextNode, visitNilNode, visitNthRefNode, visitOpAsgnAndNode, visitOpAsgnNode, visitOpAsgnOrNode, visitOpElementAsgnNode, visitOptArgNode, visitOrNode, visitOther, visitRationalNode, visitRedoNode, visitRegexpNode, visitRequiredKeywordArgumentValueNode, visitRescueBodyNode, visitRescueNode, visitRestArgNode, visitRetryNode, visitReturnNode, visitRootNode, visitSClassNode, visitSelfNode, visitSplatNode, visitStrNode, visitSuperNode, visitSValueNode, visitSymbolNode, visitTrueNode, visitUndefNode, visitUntilNode, visitVAliasNode, visitVCallNode, visitWhenNode, visitWhileNode, visitXStrNode, visitYieldNode, visitZArrayNode, visitZSuperNode
protected Void defaultVisit(Node iVisited)
defaultVisit
in class AbstractNodeVisitor<Void>
public static Set<String> findVariables(Node node)
node
- the node to walkpublic Set<String> getFoundVariables()
public Void visitClassNode(ClassNode iVisited)
visitClassNode
in interface NodeVisitor<Void>
visitClassNode
in class AbstractNodeVisitor<Void>
public Void visitInstAsgnNode(InstAsgnNode iVisited)
visitInstAsgnNode
in interface NodeVisitor<Void>
visitInstAsgnNode
in class AbstractNodeVisitor<Void>
public Void visitInstVarNode(InstVarNode iVisited)
visitInstVarNode
in interface NodeVisitor<Void>
visitInstVarNode
in class AbstractNodeVisitor<Void>
public Void visitModuleNode(ModuleNode iVisited)
visitModuleNode
in interface NodeVisitor<Void>
visitModuleNode
in class AbstractNodeVisitor<Void>
public Void visitPreExeNode(PreExeNode iVisited)
visitPreExeNode
in interface NodeVisitor<Void>
visitPreExeNode
in class AbstractNodeVisitor<Void>
public Void visitPostExeNode(PostExeNode iVisited)
visitPostExeNode
in interface NodeVisitor<Void>
visitPostExeNode
in class AbstractNodeVisitor<Void>
Copyright © 2001-2015 JRuby. All Rights Reserved.