public class InstanceVariableFinder extends AbstractNodeVisitor
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 |
---|---|
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.
|
Object |
visitClassNode(ClassNode iVisited)
ClassNode creates a new scope and self, so do not search for ivars.
|
Object |
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.
|
Object |
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.
|
Object |
visitModuleNode(ModuleNode iVisited)
ModuleNode creates a new scope and self, so do not search for ivars.
|
Object |
visitPostExeNode(PostExeNode iVisited)
PostExeNode can't appear in methods, so do not search for ivars.
|
Object |
visitPreExeNode(PreExeNode iVisited)
PreExeNode can't appear in methods, so do not search for ivars.
|
visitAliasNode, visitAndNode, visitArgsCatNode, visitArgsNode, visitArgsPushNode, visitArrayNode, visitAttrAssignNode, visitBackRefNode, visitBeginNode, visitBignumNode, visitBlockArg18Node, visitBlockArgNode, visitBlockNode, visitBlockPassNode, visitBreakNode, visitCallNode, visitCaseNode, visitClassVarAsgnNode, visitClassVarDeclNode, visitClassVarNode, visitColon2Node, visitColon3Node, visitConstDeclNode, visitConstNode, visitDAsgnNode, visitDefinedNode, visitDefnNode, visitDefsNode, visitDotNode, visitDRegxNode, visitDStrNode, visitDSymbolNode, visitDVarNode, visitDXStrNode, visitEncodingNode, visitEnsureNode, visitEvStrNode, visitFalseNode, visitFCallNode, visitFixnumNode, visitFlipNode, visitFloatNode, visitForNode, visitGlobalAsgnNode, visitGlobalVarNode, visitHashNode, visitIfNode, visitIterNode, visitKeywordArgNode, visitKeywordRestArgNode, visitLambdaNode, visitListNode, visitLiteralNode, visitLocalAsgnNode, visitLocalVarNode, visitMatch2Node, visitMatch3Node, visitMatchNode, visitMultipleAsgnNode, visitMultipleAsgnNode, visitNewlineNode, visitNextNode, visitNilNode, visitNotNode, visitNthRefNode, visitOpAsgnAndNode, visitOpAsgnNode, visitOpAsgnOrNode, visitOpElementAsgnNode, visitOptArgNode, visitOrNode, visitRedoNode, visitRegexpNode, visitRescueBodyNode, visitRescueNode, visitRestArgNode, visitRetryNode, visitReturnNode, visitRootNode, visitSClassNode, visitSelfNode, visitSplatNode, visitStrNode, visitSuperNode, visitSValueNode, visitSymbolNode, visitToAryNode, visitTrueNode, visitUndefNode, visitUntilNode, visitVAliasNode, visitVCallNode, visitWhenNode, visitWhileNode, visitXStrNode, visitYieldNode, visitZArrayNode, visitZSuperNode
public static Set<String> findVariables(Node node)
node
- the node to walkpublic Set<String> getFoundVariables()
getFoundVariables
in class AbstractNodeVisitor
public Object visitClassNode(ClassNode iVisited)
visitClassNode
in interface NodeVisitor
visitClassNode
in class AbstractNodeVisitor
public Object visitInstAsgnNode(InstAsgnNode iVisited)
visitInstAsgnNode
in interface NodeVisitor
visitInstAsgnNode
in class AbstractNodeVisitor
public Object visitInstVarNode(InstVarNode iVisited)
visitInstVarNode
in interface NodeVisitor
visitInstVarNode
in class AbstractNodeVisitor
public Object visitModuleNode(ModuleNode iVisited)
visitModuleNode
in interface NodeVisitor
visitModuleNode
in class AbstractNodeVisitor
public Object visitPreExeNode(PreExeNode iVisited)
visitPreExeNode
in interface NodeVisitor
visitPreExeNode
in class AbstractNodeVisitor
public Object visitPostExeNode(PostExeNode iVisited)
visitPostExeNode
in interface NodeVisitor
visitPostExeNode
in class AbstractNodeVisitor
Copyright © 2001-2014 JRuby. All Rights Reserved.