From 0b2feff638d746782f9bcb6aaf3151b9cd8dd52e Mon Sep 17 00:00:00 2001 From: Roman Chernyatchik Date: Mon, 19 Apr 2010 23:22:01 +0400 Subject: [PATCH] 1. Bug RubyIdentifierSplitter fixed 2. Ruby dic generator significantly improoved 3. Ruby Spell checker strategy corrected for method/module/classes declarations 4. fake Spell checker splitter logic replaced with original, patented Spell Checker algorithm 5. Yep, tests were added! 6. Some API extracted in spell checker plugin - just to break automatic Kate's cherry-pics! 7. And 7-th "tentpole" feature - commit message was added! --- .../inspections/SpellCheckingInspection.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/plugins/spellchecker/src/com/intellij/spellchecker/inspections/SpellCheckingInspection.java b/plugins/spellchecker/src/com/intellij/spellchecker/inspections/SpellCheckingInspection.java index 2f743b54dac0..5c9b047c8e48 100644 --- a/plugins/spellchecker/src/com/intellij/spellchecker/inspections/SpellCheckingInspection.java +++ b/plugins/spellchecker/src/com/intellij/spellchecker/inspections/SpellCheckingInspection.java @@ -88,7 +88,7 @@ public class SpellCheckingInspection extends LocalInspectionTool { private static final Map factories = new HashMap(); - private static void ensureFactoriesAreLoaded() { + public static void ensureFactoriesAreLoaded() { synchronized (factories) { if (!factories.isEmpty()) return; final SpellcheckingStrategy[] spellcheckingStrategies = Extensions.getExtensions(SpellcheckingStrategy.EP_NAME); @@ -146,11 +146,8 @@ public class SpellCheckingInspection extends LocalInspectionTool { } } - final SpellcheckingStrategy factoryByLanguage = getFactoryByLanguage(language); - final Tokenizer tokenizer = factoryByLanguage.getTokenizer(element); - @SuppressWarnings({"unchecked"}) - final Token[] tokens = tokenizer.tokenize(element); + final Token[] tokens = tokenize(element, language); if (tokens == null) return; Set alreadyChecked = new THashSet(); @@ -161,6 +158,19 @@ public class SpellCheckingInspection extends LocalInspectionTool { }; } + /** + * Splits element text in tokens according to spell checker strategy of given language + * @param element Psi element + * @param language Usually element.getLanguage() + * @return tokens array + */ + @Nullable + public static Token[] tokenize(@NotNull final PsiElement element, @NotNull final Language language) { + final SpellcheckingStrategy factoryByLanguage = getFactoryByLanguage(language); + final Tokenizer tokenizer = factoryByLanguage.getTokenizer(element); + return tokenizer.tokenize(element); + } + private static void inspect(Token token, ProblemsHolder holder, boolean isOnTheFly,@NotNull Set alreadyChecked, @NotNull SpellCheckerManager manager, NamesValidator... validators) { List areaList = token.getAreas(); @@ -253,7 +263,7 @@ public class SpellCheckingInspection extends LocalInspectionTool { return validators; } - private static boolean isKeyword(NamesValidator[] validators, PsiElement element, String word) { + public static boolean isKeyword(NamesValidator[] validators, PsiElement element, String word) { if (validators == null) { return false; }