package org.erlide.ui.editors.erl.scanner;
import java.util.List;
import org.eclipse.jface.text.rules.EndOfLineRule;
import org.eclipse.jface.text.rules.IPredicateRule;
import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.MultiLineRule;
import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;
import org.eclipse.jface.text.rules.Token;
import com.google.common.collect.Lists;
public class ErlangPartitionScanner extends RuleBasedPartitionScanner {
public ErlangPartitionScanner() {
super();
final IToken character = new Token(IErlangPartitions.ERLANG_CHARACTER);
final IToken string = new Token(IErlangPartitions.ERLANG_STRING);
final IToken comment = new Token(IErlangPartitions.ERLANG_COMMENT);
final IToken qatom = new Token(IErlangPartitions.ERLANG_QATOM);
final List<IRule> rules = Lists.newArrayList();
rules.add(new ErlangCharRule(character));
rules.add(new EndOfLineRule("%", comment));
rules.add(new MultiLineRule("\"", "\"", string, '\\', true));
rules.add(new MultiLineRule("'", "'", qatom, '\\', true));
final IPredicateRule[] result = new IPredicateRule[rules.size()];
rules.toArray(result);
setPredicateRules(result);
}
}