Package org.erlide.ui.editors.erl.scanner

Source Code of org.erlide.ui.editors.erl.scanner.ErlCommentScanner

package org.erlide.ui.editors.erl.scanner;

import java.util.List;

import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.IWordDetector;
import org.eclipse.jface.text.rules.SingleLineRule;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.jface.text.rules.WordRule;
import org.erlide.ui.prefs.TokenHighlight;
import org.erlide.ui.util.IColorManager;

import com.google.common.collect.Lists;

public class ErlCommentScanner extends ErlTokenScanner {

    public ErlCommentScanner(final IColorManager colorManager) {
        super(colorManager);
        final Token defaultToken = ErlTokenScanner.getToken(TokenHighlight.COMMENT
                .getName());
        setDefaultReturnToken(defaultToken);

        final Token edocTag = ErlTokenScanner.getToken(TokenHighlight.EDOC_TAG.getName());
        final Token htmlTag = ErlTokenScanner.getToken(TokenHighlight.HTML_TAG.getName());

        final List<IRule> rulesList = Lists.newArrayList();
        rulesList.add(new WordRule(new EdocTagDetector(), edocTag));
        rulesList.add(new SingleLineRule("<", ">", htmlTag));
        final WordRule taskRule = new WordRule(new IWordDetector() {

            @Override
            public boolean isWordStart(final char c) {
                return Character.isLetter(c);
            }

            @Override
            public boolean isWordPart(final char c) {
                return Character.isLetter(c);
            }
        }, defaultToken);
        taskRule.addWord("TODO", edocTag);
        taskRule.addWord("FIXME", edocTag);
        taskRule.addWord("XXX", edocTag);
        rulesList.add(taskRule);

        final IRule[] rules = new IRule[rulesList.size()];
        rulesList.toArray(rules);
        setRules(rules);
    }

    private final class EdocTagDetector implements IWordDetector {
        @Override
        public boolean isWordStart(final char c) {
            return c == '@';
        }

        @Override
        public boolean isWordPart(final char c) {
            return Character.isLowerCase(c);
        }
    }

}
TOP

Related Classes of org.erlide.ui.editors.erl.scanner.ErlCommentScanner

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.