package com.innovatian.idea.powershell.highlighter;
import com.innovatian.idea.powershell.lang.lexer.PsLexer;
import com.innovatian.idea.powershell.lang.lexer.PsTokenSets;
import com.innovatian.idea.powershell.lang.lexer.PsTokenTypes;
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 com.intellij.psi.tree.TokenSet;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.Map;
public class PsSyntaxHighlighter extends SyntaxHighlighterBase implements PsTokenTypes {
private static final Map<IElementType, TextAttributesKey> ATTRIBUTES = new HashMap<IElementType, TextAttributesKey>();
static final TokenSet tBLOCK_COMMENTS = TokenSet.create(
ML_COMMENT
);
static final TokenSet tNUMBERS = TokenSet.create(
NUMBER
);
static final TokenSet tLINE_COMMENTS = TokenSet.create(
SL_COMMENT
);
static final TokenSet tBAD_CHARACTERS = TokenSet.create(
WRONG
);
static final TokenSet tEXPSTRINGS = TokenSet.create(
EXPSTRING_BEGIN,
EXPSTRING_CONTENT,
EXPSTRING_END,
EXPSTRING_LITERAL
);
static final TokenSet tSTRINGS = TokenSet.create(
STRING_LITERAL
);
static final TokenSet tBRACES = TokenSet.create(
LCURLY,
RCURLY
);
static final TokenSet tPARENTHESES = TokenSet.create(
LPAREN,
RPAREN
);
static final TokenSet tBRACKETS = TokenSet.create(
LBRACK,
RBRACK
);
static {
fillMap(ATTRIBUTES, tLINE_COMMENTS, DefaultHighlighter.LINE_COMMENT);
fillMap(ATTRIBUTES, tBLOCK_COMMENTS, DefaultHighlighter.BLOCK_COMMENT);
fillMap(ATTRIBUTES, tBAD_CHARACTERS, DefaultHighlighter.BAD_CHARACTER);
fillMap(ATTRIBUTES, PsTokenSets.KEYWORDS, DefaultHighlighter.KEYWORD);
fillMap(ATTRIBUTES, PsTokenSets.COMPARISONOPS, DefaultHighlighter.KEYWORD);
fillMap(ATTRIBUTES, tNUMBERS, DefaultHighlighter.NUMBER);
fillMap(ATTRIBUTES, tEXPSTRINGS, DefaultHighlighter.GSTRING);
fillMap(ATTRIBUTES, tSTRINGS, DefaultHighlighter.STRING);
fillMap(ATTRIBUTES, tBRACES, DefaultHighlighter.BRACES);
fillMap(ATTRIBUTES, tBRACKETS, DefaultHighlighter.BRACKETS);
fillMap(ATTRIBUTES, tPARENTHESES, DefaultHighlighter.PARENTHESES);
}
@NotNull
public Lexer getHighlightingLexer() {
return new PsLexer();
}
@NotNull
public TextAttributesKey[] getTokenHighlights(IElementType tokenType) {
return pack(ATTRIBUTES.get(tokenType));
}
}