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, visitZSuperNodepublic static Set<String> findVariables(Node node)
node - the node to walkpublic Set<String> getFoundVariables()
getFoundVariables in class AbstractNodeVisitorpublic Object visitClassNode(ClassNode iVisited)
visitClassNode in interface NodeVisitorvisitClassNode in class AbstractNodeVisitorpublic Object visitInstAsgnNode(InstAsgnNode iVisited)
visitInstAsgnNode in interface NodeVisitorvisitInstAsgnNode in class AbstractNodeVisitorpublic Object visitInstVarNode(InstVarNode iVisited)
visitInstVarNode in interface NodeVisitorvisitInstVarNode in class AbstractNodeVisitorpublic Object visitModuleNode(ModuleNode iVisited)
visitModuleNode in interface NodeVisitorvisitModuleNode in class AbstractNodeVisitorpublic Object visitPreExeNode(PreExeNode iVisited)
visitPreExeNode in interface NodeVisitorvisitPreExeNode in class AbstractNodeVisitorpublic Object visitPostExeNode(PostExeNode iVisited)
visitPostExeNode in interface NodeVisitorvisitPostExeNode in class AbstractNodeVisitorCopyright © 2001–2024 JRuby. All rights reserved.