package org.jetbrains.plugins.cucumber.psi;
import com.intellij.lexer.Lexer;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.fileTypes.SyntaxHighlighterBase;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.Map;
import static org.jetbrains.plugins.cucumber.psi.GherkinTokenTypes.*;
/**
* @author yole
*/
public class GherkinSyntaxHighlighter extends SyntaxHighlighterBase {
private static final Map<IElementType, TextAttributesKey> ATTRIBUTES = new HashMap<>();
private final GherkinKeywordProvider myKeywordProvider;
public GherkinSyntaxHighlighter(GherkinKeywordProvider keywordProvider) {
myKeywordProvider = keywordProvider;
}
static {
ATTRIBUTES.put(COMMENT, GherkinHighlighter.COMMENT);
ATTRIBUTES.put(TEXT, GherkinHighlighter.TEXT);
ATTRIBUTES.put(STEP_KEYWORD, GherkinHighlighter.KEYWORD);
ATTRIBUTES.put(TAG, GherkinHighlighter.TAG);
ATTRIBUTES.put(FEATURE_KEYWORD, GherkinHighlighter.KEYWORD);
ATTRIBUTES.put(SCENARIO_KEYWORD, GherkinHighlighter.KEYWORD);
ATTRIBUTES.put(BACKGROUND_KEYWORD, GherkinHighlighter.KEYWORD);
ATTRIBUTES.put(EXAMPLES_KEYWORD, GherkinHighlighter.KEYWORD);
ATTRIBUTES.put(SCENARIO_OUTLINE_KEYWORD, GherkinHighlighter.KEYWORD);
ATTRIBUTES.put(PYSTRING, GherkinHighlighter.PYSTRING);
ATTRIBUTES.put(PYSTRING_TEXT, GherkinHighlighter.PYSTRING);
ATTRIBUTES.put(TABLE_CELL, GherkinHighlighter.TABLE_CELL);
ATTRIBUTES.put(PIPE, GherkinHighlighter.PIPE);
ATTRIBUTES.put(COLON, GherkinHighlighter.KEYWORD);
}
@NotNull
public Lexer getHighlightingLexer() {
return new GherkinLexer(myKeywordProvider);
}
@NotNull
public TextAttributesKey[] getTokenHighlights(IElementType tokenType) {
return SyntaxHighlighterBase.pack(ATTRIBUTES.get(tokenType));
}
}