/**
- * Reads a java doc comment from a java doc comment. Skips star-character
+ * Reads a phpdoc comment from a phpdoc comment. Skips star-character
* on begin of line
*/
-public class PHPDocCommentReader extends SingleCharReader {
+public class PHPDocBufferCommentReader extends SingleCharReader {
private IBuffer fBuffer;
private boolean fWasNewLine;
- public PHPDocCommentReader(IBuffer buf, int start, int end) {
+ public PHPDocBufferCommentReader(IBuffer buf, int start, int end) {
fBuffer= buf;
fStartPos= start + 3;
fEndPos= end - 2;
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2000, 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package net.sourceforge.phpdt.internal.corext.phpdoc;
+
+import net.sourceforge.phpdt.internal.corext.util.Strings;
+
+/**
+ * Reads a phpdoc comment from a phpdoc comment. Skips star-character
+ * on begin of line
+ */
+public class PHPDocCharArrayCommentReader extends SingleCharReader {
+
+ private char[] fCharArray;
+ private int fCurrPos;
+ private int fStartPos;
+ private int fEndPos;
+
+ private boolean fWasNewLine;
+
+ public PHPDocCharArrayCommentReader(char[] buf) {
+ this(buf, 0, buf.length);
+ }
+
+ public PHPDocCharArrayCommentReader(char[] buf, int start, int end) {
+ fCharArray = buf;
+ fStartPos= start + 3;
+ fEndPos= end - 2;
+
+ reset();
+ }
+
+ /**
+ * @see java.io.Reader#read()
+ */
+ public int read() {
+ if (fCurrPos < fEndPos) {
+ char ch;
+ if (fWasNewLine) {
+ do {
+ ch = fCharArray[fCurrPos++];
+ } while (fCurrPos < fEndPos && Character.isWhitespace(ch));
+ if (ch == '*') {
+ if (fCurrPos < fEndPos) {
+ do {
+ ch = fCharArray[fCurrPos++];
+ } while (ch == '*');
+ } else {
+ return -1;
+ }
+ }
+ } else {
+ ch = fCharArray[fCurrPos++];
+ }
+ fWasNewLine = Strings.isLineDelimiterChar(ch);
+
+ return ch;
+ }
+ return -1;
+ }
+
+ /**
+ * @see java.io.Reader#close()
+ */
+ public void close() {
+ fCharArray = null;
+ }
+
+ /**
+ * @see java.io.Reader#reset()
+ */
+ public void reset() {
+ fCurrPos = fStartPos;
+ fWasNewLine = true;
+ }
+
+}
package net.sourceforge.phpeclipse.phpeditor;
import java.io.FileReader;
-import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Vector;
+import net.sourceforge.phpdt.internal.corext.phpdoc.PHPDocCharArrayCommentReader;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
import net.sourceforge.phpeclipse.builder.PHPIdentifierLocation;
PHPIdentifierLocation location;
String filename;
FileReader phpdocFileReader;
+ PHPDocCharArrayCommentReader phpdocConverter;
StringBuffer hoverInfoBuffer = new StringBuffer();
String workspaceLocation = PHPeclipsePlugin.getWorkspace().getRoot().getLocation().toString();
- boolean foundPHPdoc = false;
+ // boolean foundPHPdoc = false;
for (int i = 0; i < list.size(); i++) {
- location = (PHPIdentifierLocation) list.get(0);
+ location = (PHPIdentifierLocation) list.get(i);
+ filename = workspaceLocation + location.getFilename();
+ hoverInfoBuffer.append(location.toString());
+ hoverInfoBuffer.append('\n');
if (location.getPHPDocOffset() >= 0) {
- foundPHPdoc = true;
- filename = workspaceLocation + location.getFilename();
+ // foundPHPdoc = true;
phpdocFileReader = new FileReader(filename);
- hoverInfoBuffer.append("PHPdoc found in file: ");
- hoverInfoBuffer.append(filename);
- hoverInfoBuffer.append('\n');
char[] charArray = new char[location.getPHPDocLength()];
phpdocFileReader.skip(location.getPHPDocOffset());
phpdocFileReader.read(charArray, 0, location.getPHPDocLength());
- hoverInfoBuffer.append(charArray);
+ phpdocConverter = new PHPDocCharArrayCommentReader(charArray);
+ hoverInfoBuffer.append(phpdocConverter.getString());
hoverInfoBuffer.append('\n');
}
}
- if (foundPHPdoc) {
- hoverInfo = hoverInfoBuffer.toString();
- }
+ // if (foundPHPdoc) {
+ hoverInfo = hoverInfoBuffer.toString();
+ // }
} catch (Throwable e) {
// ignore exceptions
// e.printStackTrace();