package org.elixir_lang.elixir_flex_lexer.named_sigil; import com.intellij.psi.tree.IElementType; import org.elixir_lang.ElixirFlexLexer; import org.elixir_lang.elixir_flex_lexer.TokenTest; import org.junit.Ignore; import java.io.IOException; import java.util.Arrays; import java.util.Collection; /** * Created by luke.imhoff on 9/4/14. */ @Ignore("abstract") public abstract class Test extends TokenTest { /* * Constructors */ public Test(CharSequence charSequence, IElementType tokenType, int lexicalState) { super(charSequence, tokenType, lexicalState); } /* * Methods */ protected abstract Sigil instanceSigil(); @Override protected void reset(CharSequence charSequence) throws IOException { // start to trigger NAMED_SIGIL state CharSequence fullCharSequence = "~" + instanceSigil().name() + charSequence; super.reset(fullCharSequence); // consume '~' flexLexer.advance(); // consume sigil name flexLexer.advance(); } public static Collection<Object[]> generateData(Sigil sigil) { return Arrays.asList(new Object[][]{ { "\"\"\"", sigil.heredocPromoterType(), ElixirFlexLexer.GROUP_HEREDOC_START }, { "'''", sigil.heredocPromoterType(), ElixirFlexLexer.GROUP_HEREDOC_START }, { "/", sigil.promoterType(), ElixirFlexLexer.GROUP }, { "|", sigil.promoterType(), ElixirFlexLexer.GROUP }, { "{", sigil.promoterType(), ElixirFlexLexer.GROUP }, { "[", sigil.promoterType(), ElixirFlexLexer.GROUP }, { "<", sigil.promoterType(), ElixirFlexLexer.GROUP }, { "\"", sigil.promoterType(), ElixirFlexLexer.GROUP }, { "(", sigil.promoterType(), ElixirFlexLexer.GROUP }, { "'", sigil.promoterType(), ElixirFlexLexer.GROUP } } ); } }