X-Git-Url: http://git.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..1ef819f 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(" - ");
+ try {
+ hoverInfoBuffer.append( getUsage(filename, location) );
+ hoverInfoBuffer.append("
");
- 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) {
+// hoverInfoBuffer.append("
");
+ 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;
}
}