package net.lucky_dip.sasseditor.editor.rules;
import net.lucky_dip.hamleditor.HTMLCSSKeywords;
import net.lucky_dip.sasseditor.editor.SassWordDetector;
import org.eclipse.jface.text.rules.ICharacterScanner;
import org.eclipse.jface.text.rules.IPredicateRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.Token;
public class SassTagRule implements IPredicateRule {
private IToken token;
private SassWordDetector wordDetector;
public SassTagRule(IToken token) {
this.token = token;
this.wordDetector = new SassWordDetector();
}
public IToken evaluate(ICharacterScanner scanner, boolean resume) {
return evaluate(scanner);
}
public IToken getSuccessToken() {
return token;
}
/**
* A tag is a html tag on a line by itself
*/
public IToken evaluate(ICharacterScanner scanner) {
int read = 0;
int c;
String str = "";
IToken res = Token.UNDEFINED;
boolean startOfRow = scanner.getColumn() == 0;
char last = 0;
if (!startOfRow) {
scanner.unread();
last = (char) scanner.read();
}
while ((c = scanner.read()) != -1) {
read++;
if (c != 10 && c != 13) {
str += (char) c;
}
else {
break;
}
}
if ((startOfRow || !wordDetector.isWordPart(last)) && HTMLCSSKeywords.isHtmlTag(str.trim())) {
res = token;
}
else {
for (int i = 0; i < read; i++) {
scanner.unread();
}
}
return res;
}
}