X-Git-Url: http://git.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse.32.compatibility/src/net/sourceforge/phpdt/internal/corext/phpdoc/PHPDocUtil.java b/net.sourceforge.phpeclipse.32.compatibility/src/net/sourceforge/phpdt/internal/corext/phpdoc/PHPDocUtil.java
new file mode 100644
index 0000000..0d477e1
--- /dev/null
+++ b/net.sourceforge.phpeclipse.32.compatibility/src/net/sourceforge/phpdt/internal/corext/phpdoc/PHPDocUtil.java
@@ -0,0 +1,93 @@
+package net.sourceforge.phpdt.internal.corext.phpdoc;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+import net.sourceforge.phpeclipse.builder.PHPIdentifierLocation;
+
+/**
+ * Utility class for static PHPdoc helper mehods
+ */
+public class PHPDocUtil {
+
+ /**
+ * 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(" - ");
+ try {
+ hoverInfoBuffer.append(getUsage(filename, location));
+ hoverInfoBuffer.append("
");
+
+ // 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("
");
+ 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;
+ }
+}