package org.rubypeople.rdt.internal.ui.text;
import java.io.EOFException;
import org.eclipse.jface.text.rules.ICharacterScanner;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.MultiLineRule;
public class DocumentationCommentRule extends MultiLineRule {
private final static String endSequence = "=end";
public DocumentationCommentRule(IToken token) {
super("=begin", "", token);
setColumnConstraint(0);
}
@Override
protected boolean endSequenceDetected(ICharacterScanner scanner) {
if(scanner.getColumn() != 0)
return false;
String line = "";
do {
try {
line = readLine(scanner);
} catch (EOFException e) {
return true;
}
}
while(! endSequence.equals(line));
return true;
}
private String readLine(ICharacterScanner scanner) throws EOFException {
StringBuffer line = new StringBuffer();
while(true) {
int c = scanner.read();
if((char) c == '\n' || (char) c == '\r')
break;
else if (c == ICharacterScanner.EOF)
throw new EOFException();
else
line.append((char) c);
}
return line.toString();
}
}