/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.lang;
import com.intellij.psi.JavaTokenType;
import com.intellij.psi.TokenType;
import com.intellij.psi.tree.IElementType;
import gw.lang.parser.ISourceCodeTokenizer;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.Map;
public class GosuIjTokenMap {
private static final GosuIjTokenMap INSTANCE = new GosuIjTokenMap();
@NotNull
public static GosuIjTokenMap instance() {
return INSTANCE;
}
private final Map<Integer, IElementType> _map = new HashMap<>();
private GosuIjTokenMap() {
_map.put(ISourceCodeTokenizer.TT_EOL, JavaTokenType.WHITE_SPACE);
_map.put(ISourceCodeTokenizer.TT_EOF, JavaTokenType.WHITE_SPACE);
_map.put(ISourceCodeTokenizer.TT_WHITESPACE, JavaTokenType.WHITE_SPACE);
_map.put(ISourceCodeTokenizer.TT_COMMENT, JavaTokenType.C_STYLE_COMMENT);
_map.put(ISourceCodeTokenizer.TT_NUMBER, JavaTokenType.DOUBLE_LITERAL);
_map.put(ISourceCodeTokenizer.TT_WORD, JavaTokenType.IDENTIFIER);
_map.put(ISourceCodeTokenizer.TT_OPERATOR, JavaTokenType.OR);
_map.put(ISourceCodeTokenizer.TT_KEYWORD, JavaTokenType.ABSTRACT_KEYWORD);
_map.put(ISourceCodeTokenizer.TT_NOTHING, TokenType.DUMMY_HOLDER);
_map.put(ISourceCodeTokenizer.TT_INTEGER, JavaTokenType.INTEGER_LITERAL);
_map.put((int) '"', JavaTokenType.STRING_LITERAL);
_map.put((int) '\'', JavaTokenType.CHARACTER_LITERAL);
_map.put((int) '(', JavaTokenType.LPARENTH);
_map.put((int) ')', JavaTokenType.RPARENTH);
_map.put((int) '[', JavaTokenType.LBRACKET);
_map.put((int) ']', JavaTokenType.RBRACKET);
_map.put((int) '{', JavaTokenType.LBRACE);
_map.put((int) '}', JavaTokenType.RBRACE);
_map.put((int) '.', JavaTokenType.DOT);
_map.put((int) ';', JavaTokenType.SEMICOLON);
_map.put((int) ',', JavaTokenType.COMMA);
}
public IElementType getTokenType(int iGosuTT) {
final IElementType type = _map.get(iGosuTT);
return type != null ? type : JavaTokenType.IDENTIFIER;
}
}