[Pydev-cvs] org.python.pydev.parser/src/org/python/pydev/parser/visitors NodeUtils.java, 1.33, 1.3
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2006-06-09 23:12:35
|
Update of /cvsroot/pydev/org.python.pydev.parser/src/org/python/pydev/parser/visitors In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12106/src/org/python/pydev/parser/visitors Modified Files: NodeUtils.java Log Message: Index: NodeUtils.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev.parser/src/org/python/pydev/parser/visitors/NodeUtils.java,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** NodeUtils.java 9 Jun 2006 00:41:52 -0000 1.33 --- NodeUtils.java 9 Jun 2006 23:12:31 -0000 1.34 *************** *** 6,9 **** --- 6,10 ---- import java.util.ArrayList; import java.util.Collections; + import java.util.Iterator; import java.util.List; *************** *** 32,35 **** --- 33,38 ---- import org.python.pydev.parser.jython.ast.keywordType; import org.python.pydev.parser.jython.ast.stmtType; + import org.python.pydev.parser.visitors.scope.ASTEntry; + import org.python.pydev.parser.visitors.scope.EasyASTIteratorVisitor; public class NodeUtils { *************** *** 583,586 **** --- 586,632 ---- } + + /** + * @param lineNumber the line we want to get the context from + * @param ast the ast that corresponds to our context + * @return the full name for the context where we are (in the format Class.method.xxx.xxx) + */ + public static String getContextName(int lineNumber, SimpleNode ast) { + if(ast != null){ + EasyASTIteratorVisitor visitor = EasyASTIteratorVisitor.create(ast); + Iterator<ASTEntry> classesAndMethodsIterator = visitor.getClassesAndMethodsIterator(); + ASTEntry last = null; + while (classesAndMethodsIterator.hasNext()) { + ASTEntry entry = classesAndMethodsIterator.next(); + if(entry.node.beginLine > lineNumber+1){ + //ok, now, let's find out which context actually contains it... + break; + } + last = entry; + } + + while(last != null && last.endLine <= lineNumber){ + last = last.parent; + } + + if(last != null){ + + StringBuffer buffer = new StringBuffer(); + boolean first = true; + while (last != null){ + String name = last.getName(); + buffer.insert(0, name); + last = last.parent; + if(!first){ + buffer.insert(name.length(),"."); + } + first = false; + } + return buffer.toString(); + } + } + return null; + } + |