Esempio n. 1
0
 /**
  * This method will fire the spell check event and then handle the event action that has been
  * selected by the user.
  *
  * @param tokenizer Description of the Parameter
  * @param event The event to handle
  * @return Returns true if the event action is to cancel the current spell checking, false if the
  *     spell checking should continue
  */
 @SuppressWarnings("unchecked")
 protected boolean fireAndHandleEvent(WordTokenizer tokenizer, SpellCheckEvent event) {
   fireSpellCheckEvent(event);
   String word = event.getInvalidWord();
   // Work out what to do in response to the event.
   switch (event.getAction()) {
     case SpellCheckEvent.INITIAL:
       break;
     case SpellCheckEvent.IGNORE:
       break;
     case SpellCheckEvent.IGNOREALL:
       ignoreAll(word);
       break;
     case SpellCheckEvent.REPLACE:
       tokenizer.replaceWord(event.getReplaceWord());
       break;
     case SpellCheckEvent.REPLACEALL:
       String replaceAllWord = event.getReplaceWord();
       if (!autoReplaceWords.containsKey(word)) {
         autoReplaceWords.put(word, replaceAllWord);
       }
       tokenizer.replaceWord(replaceAllWord);
       break;
     case SpellCheckEvent.ADDTODICT:
       String addWord = event.getReplaceWord();
       if (!addWord.equals(word)) tokenizer.replaceWord(addWord);
       userdictionary.addWord(addWord);
       break;
     case SpellCheckEvent.CANCEL:
       return true;
     default:
       throw new IllegalArgumentException("Unhandled case.");
   }
   return false;
 }
Esempio n. 2
0
 private boolean capitalizeSuggestions(String word, WordTokenizer wordTokenizer) {
   // if SPELL_IGNORESENTENCECAPITALIZATION and the initial word is capitalized, suggestions should
   // also be capitalized
   // if !SPELL_IGNORESENTENCECAPITALIZATION, capitalize suggestions only for the first word in a
   // sentence
   boolean configCapitalize = !config.getBoolean(Configuration.SPELL_IGNORESENTENCECAPITALIZATION);
   boolean uppercase = Character.isUpperCase(word.charAt(0));
   return (configCapitalize && wordTokenizer.isNewSentence()) || (!configCapitalize && uppercase);
 }
Esempio n. 3
0
 private boolean isSupposedToBeCapitalized(String word, WordTokenizer wordTokenizer) {
   boolean configCapitalize = !config.getBoolean(Configuration.SPELL_IGNORESENTENCECAPITALIZATION);
   return configCapitalize
       && wordTokenizer.isNewSentence()
       && Character.isLowerCase(word.charAt(0));
 }
Esempio n. 4
0
 /**
  * This method is called to check the spelling of the words that are returned by the
  * WordTokenizer.
  *
  * <p>For each invalid word the action listeners will be informed with a new SpellCheckEvent.
  *
  * <p>
  *
  * @param tokenizer The media containing the text to analyze.
  * @return Either SPELLCHECK_OK, SPELLCHECK_CANCEL or the number of errors found. The number of
  *     errors are those that are found BEFORE any corrections are made.
  */
 @SuppressWarnings("unchecked")
 public final int checkSpelling(WordTokenizer tokenizer) {
   int errors = 0;
   boolean terminated = false;
   // Keep track of the previous word
   //    String previousWord = null;
   while (tokenizer.hasMoreWords() && !terminated) {
     String word = tokenizer.nextWord();
     // Check the spelling of the word
     if (!isCorrect(word)) {
       if ((config.getBoolean(Configuration.SPELL_IGNOREMIXEDCASE)
               && isMixedCaseWord(word, tokenizer.isNewSentence()))
           || (config.getBoolean(Configuration.SPELL_IGNOREUPPERCASE) && isUpperCaseWord(word))
           || (config.getBoolean(Configuration.SPELL_IGNOREDIGITWORDS) && isDigitWord(word))
           || (config.getBoolean(Configuration.SPELL_IGNOREINTERNETADDRESSES)
               && isINETWord(word))) {
         // Null event. Since we are ignoring this word due
         // to one of the above cases.
       } else {
         // We cant ignore this misspelt word
         // For this invalid word are we ignoring the misspelling?
         if (!isIgnored(word)) {
           errors++;
           // Is this word being automagically replaced
           if (autoReplaceWords.containsKey(word)) {
             tokenizer.replaceWord((String) autoReplaceWords.get(word));
           } else {
             // JMH Need to somehow capitalise the suggestions if
             // ignoreSentenceCapitalisation is not set to true
             // Fire the event.
             List suggestions =
                 getSuggestions(word, config.getInteger(Configuration.SPELL_THRESHOLD));
             if (capitalizeSuggestions(word, tokenizer))
               suggestions = makeSuggestionsCapitalized(suggestions);
             SpellCheckEvent event = new BasicSpellCheckEvent(word, suggestions, tokenizer);
             terminated = fireAndHandleEvent(tokenizer, event);
           }
         }
       }
     } else {
       // This is a correctly spelt word. However perform some extra checks
       /*
        *  JMH TBD          //Check for multiple words
        *  if (!ignoreMultipleWords &&) {
        *  }
        */
       // Check for capitalisation
       if (isSupposedToBeCapitalized(word, tokenizer)) {
         errors++;
         StringBuffer buf = new StringBuffer(word);
         buf.setCharAt(0, Character.toUpperCase(word.charAt(0)));
         Vector suggestion = new Vector();
         suggestion.addElement(new Word(buf.toString(), 0));
         SpellCheckEvent event = new BasicSpellCheckEvent(word, suggestion, tokenizer);
         terminated = fireAndHandleEvent(tokenizer, event);
       }
     }
   }
   if (terminated) return SPELLCHECK_CANCEL;
   else if (errors == 0) return SPELLCHECK_OK;
   else return errors;
 }