X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/phpdoc/PHPDocUtil.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/phpdoc/PHPDocUtil.java index 59b8ca3..71db7ae 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/phpdoc/PHPDocUtil.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/phpdoc/PHPDocUtil.java @@ -1,9 +1,3 @@ -/* - * Created on 20.09.2003 - * - * To change the template for this generated file go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ package net.sourceforge.phpdt.internal.corext.phpdoc; import java.io.FileReader; @@ -12,36 +6,79 @@ import java.io.IOException; import net.sourceforge.phpeclipse.builder.PHPIdentifierLocation; /** - * @author khartlage - * - * To change the template for this generated type comment go to - * Window>Preferences>Java>Code Generation>Code and Comments + * Utility class for static PHPdoc helper mehods */ public class PHPDocUtil { - - /** - * Generate a PHPDoc hover text if possible - * - * @param hoverInfoBuffer - * @param filename - * @param location - */ + + /** + * Generate a PHPDoc hover text if possible + * + * @param hoverInfoBuffer + * @param filename + * @param location + */ public static void appendPHPDoc(StringBuffer hoverInfoBuffer, String filename, PHPIdentifierLocation location) { + FileReader phpFileReader; hoverInfoBuffer.append(location.toString()); - hoverInfoBuffer.append('\n'); - if (location.getPHPDocOffset() >= 0) { - FileReader phpdocFileReader; - try { - phpdocFileReader = new FileReader(filename); + hoverInfoBuffer.append(" - \n"); + try { + hoverInfoBuffer.append( getUsage(filename, location) ); + hoverInfoBuffer.append('\n'); - char[] charArray = new char[location.getPHPDocLength()]; - phpdocFileReader.skip(location.getPHPDocOffset()); - phpdocFileReader.read(charArray, 0, location.getPHPDocLength()); - PHPDocCharArrayCommentReader phpdocConverter = new PHPDocCharArrayCommentReader(charArray); + // read the phpdoc for the function + if (location.getPHPDocOffset() >= 0) { + phpFileReader = new FileReader(filename); + char[] phpDocDeclarationCharArray = new char[location.getPHPDocLength()]; + phpFileReader.skip(location.getPHPDocOffset()); + phpFileReader.read(phpDocDeclarationCharArray, 0, location.getPHPDocLength()); + PHPDocCharArrayCommentReader phpdocConverter = new PHPDocCharArrayCommentReader(phpDocDeclarationCharArray); hoverInfoBuffer.append(phpdocConverter.getString()); hoverInfoBuffer.append('\n'); - } catch (IOException e) { + phpFileReader.close(); + } + + } catch (IOException e) { + return; + } + } + + public static String getUsage(String filename, PHPIdentifierLocation location) { + FileReader phpFileReader; + String usage = location.getUsage(); + if (usage!=null) { + return usage; + } + usage = ""; + try { + + phpFileReader = new FileReader(filename); + // read the function declaration + if (location.getOffset() >= 0 && (location.isMethod() || location.isConstructor() || location.isFunction() || location.isDefine())) { + char[] functionDeclarationCharArray = new char[256]; + int offset = location.getOffset(); + phpFileReader.skip(offset); + int length = phpFileReader.read(functionDeclarationCharArray, 0, 256); + if (length == -1) { + length = 256; + } + for (int i = 0; i < length; i++) { + if (functionDeclarationCharArray[i] == ')') { + length = i + 1; + break; + } + if (functionDeclarationCharArray[i] == '{' || functionDeclarationCharArray[i] == '}') { + length = i; + break; + } + } + usage = new String(functionDeclarationCharArray, 0, length); } + phpFileReader.close(); + } catch (IOException e) { + // do nothing } + // cache the usage string: + location.setUsage(usage); + return usage; } }