package sk.sorien.pimpleplugin.spellchecker; import com.intellij.psi.PsiElement; import com.intellij.spellchecker.tokenizer.TokenConsumer; import com.intellij.spellchecker.tokenizer.Tokenizer; import com.jetbrains.php.lang.psi.elements.StringLiteralExpression; import com.jetbrains.php.spellchecker.PhpSpellcheckingStrategy; import org.jetbrains.annotations.NotNull; import sk.sorien.pimpleplugin.ProjectComponent; import sk.sorien.pimpleplugin.pimple.Container; import sk.sorien.pimpleplugin.pimple.Utils; /** * @author Stanislav Turza */ public class SpellcheckingStrategy extends PhpSpellcheckingStrategy { private static final SpellcheckingStrategy.DummyTokenizer DUMMY_TOKENIZER = new SpellcheckingStrategy.DummyTokenizer(); @NotNull @Override public Tokenizer getTokenizer(PsiElement element) { if(!(element instanceof StringLiteralExpression)) { return super.getTokenizer(element); } if(!ProjectComponent.isEnabled(element.getProject())) { return super.getTokenizer(element); } Container container = Utils.findContainerForPimpleArrayAccessLiteral((StringLiteralExpression) element); if (container == null) { container = Utils.findContainerForFirstParameterOfPimpleMethod((StringLiteralExpression) element); if (container == null) { return super.getTokenizer(element); } } return DUMMY_TOKENIZER; } private static class DummyTokenizer extends Tokenizer { public void tokenize(@NotNull final PsiElement element, TokenConsumer consumer) { } } }