package org.eclipse.dltk.xotcl.core.documentation; import java.util.List; import org.eclipse.dltk.ast.ASTNode; import org.eclipse.dltk.ast.declarations.ModuleDeclaration; import org.eclipse.dltk.core.DLTKCore; import org.eclipse.dltk.core.IMember; import org.eclipse.dltk.tcl.core.TclParseUtil; import org.eclipse.dltk.tcl.internal.core.codeassist.TclASTUtil; import org.eclipse.dltk.xotcl.core.ast.xotcl.XOTclDocumentationNode; import org.eclipse.dltk.xotcl.internal.core.XOTclResolver; public class XOTclDocumentationResolver { public static String getDocumentationFor(IMember member) { StringBuffer descriptions = new StringBuffer(); try { ModuleDeclaration module = XOTclResolver.parseModule(member); String memberkey = TclParseUtil.getNameFromModelElement(member); List sts = TclParseUtil.findLevelFromModule(module, member, memberkey); // Check scope documentation level for (int q = 0; q < sts.size(); q++) { ASTNode parent = TclParseUtil.getPrevParent(module, (ASTNode) sts.get(q)); String elementFQN = "::" + TclParseUtil.getElementFQN(parent, "::", module); if (memberkey.length() < elementFQN.length() + 2) { continue; } String shortDescr = memberkey .substring(elementFQN.length() + 2); if (elementFQN.equals("::")) { shortDescr = memberkey.substring(2); } if (sts.size() > 0) { List statements = TclASTUtil.getStatements(parent); for (int i = 0; i < statements.size(); i++) { if (statements.get(i) instanceof XOTclDocumentationNode) { XOTclDocumentationNode doc = (XOTclDocumentationNode) statements .get(i); String description = doc.getDescription(shortDescr); if (description != null) { descriptions.append(description); } // doc.getDescription() // if(doc.getDescription(member.getElementName())); } } } } } catch (Exception e) { if (DLTKCore.DEBUG) { e.printStackTrace(); } } return descriptions.toString(); } }