package org.angularjs.html; import com.intellij.ide.highlighter.HtmlFileHighlighter; import com.intellij.lexer.HtmlHighlightingLexer; import com.intellij.lexer.Lexer; import com.intellij.openapi.fileTypes.FileTypeRegistry; import com.intellij.openapi.fileTypes.SingleLazyInstanceSyntaxHighlighterFactory; import com.intellij.openapi.fileTypes.SyntaxHighlighter; import com.intellij.psi.xml.XmlTokenType; import org.jetbrains.annotations.NotNull; /** * @author Dennis.Ushakov */ public class Angular2HTMLHighlighterFactory extends SingleLazyInstanceSyntaxHighlighterFactory { @Override @NotNull protected SyntaxHighlighter createHighlighter() { return new Angular2HTMLHighlighter(); } private static class Angular2HTMLHighlighter extends HtmlFileHighlighter { @NotNull @Override public Lexer getHighlightingLexer() { return new Angular2HtmlHighlightingLexer(); } private static class Angular2HtmlHighlightingLexer extends HtmlHighlightingLexer { public Angular2HtmlHighlightingLexer() { super(FileTypeRegistry.getInstance().findFileTypeByName("CSS")); TokenHandler value = new TokenHandler() { @Override public void handleElement(Lexer lexer) { if (!isHtmlTagState(lexer.getState())) { final String text = lexer.getTokenText(); if (text.startsWith("(") || text.startsWith("[")) { seenAttribute = true; seenScript = true; } } } }; registerHandler(XmlTokenType.XML_NAME, value); } } } }