package net.lucky_dip.sasseditor.editor.scanners;
import java.util.ArrayList;
import java.util.List;
import net.lucky_dip.sasseditor.editor.SassWordDetector;
import net.lucky_dip.sasseditor.editor.rules.SassAttributeRule;
import net.lucky_dip.sasseditor.editor.rules.SassTagRule;
import org.eclipse.jface.text.rules.IPredicateRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.jface.text.rules.WordPatternRule;
public class SassPartitionScanner extends RuleBasedPartitionScanner {
private static SassPartitionScanner instance;
public final static String SASS_CONSTANT = "__sass_constant";
public final static String SASS_ATTRIBUTE = "__sass_attribute";
public final static String SASS_CLASS = "__sass_class";
public final static String SASS_ID = "__sass_id";
public final static String SASS_TAG = "__sass_tag";
public final static String[] SASS_PARTITION_TYPES = new String[] { SASS_CONSTANT,
SASS_ATTRIBUTE, SASS_CLASS, SASS_ID, SASS_TAG };
public static boolean IsSassPartitionType(String contentType) {
boolean res = false;
for (int i = 0; !res && i < SASS_PARTITION_TYPES.length; i++) {
res = contentType.equals(SASS_PARTITION_TYPES[i]);
}
return res;
}
/**
* @return the singleton instance of the scanner
*/
public static SassPartitionScanner getInstance() {
if (instance == null) {
instance = new SassPartitionScanner();
}
return instance;
}
/**
* Constructor.
*/
private SassPartitionScanner() {
super();
IToken constantToken = new Token(SASS_CONSTANT);
IToken attributeToken = new Token(SASS_ATTRIBUTE);
IToken classToken = new Token(SASS_CLASS);
IToken idToken = new Token(SASS_ID);
IToken tagToken = new Token(SASS_TAG);
List rules = new ArrayList();
rules.add(new WordPatternRule(new SassWordDetector(), "#", "", classToken));
rules.add(new WordPatternRule(new SassWordDetector(), "!", "", constantToken));
rules.add(new WordPatternRule(new SassWordDetector(), ".", "", idToken));
rules.add(new WordPatternRule(new SassWordDetector(), ":", "", attributeToken));
rules.add(new SassAttributeRule(attributeToken));
rules.add(new SassTagRule(tagToken));
IPredicateRule[] result = new IPredicateRule[rules.size()];
rules.toArray(result);
setPredicateRules(result);
}
}