com.swabunga.spell.event.JavaWordFinder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jazzy-core Show documentation
Show all versions of jazzy-core Show documentation
A set of APIs that allow you to add spell checking functionality to Java Applications easily.
Jazzy is based on most of the algorithms that aspell has; so the suggestions they come up
with are very similar.
The newest version!
/*
Jazzy - a Java library for Spell Checking
Copyright (C) 2001 Mindaugas Idzelis
Full text of license can be found in LICENSE.txt
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package com.swabunga.spell.event;
/**
* A word finder Java source files, which searches text for sequences of
* letters formated as Java comments.
*
* @author Anthony Roy ([email protected])
*/
public class JavaWordFinder extends AbstractWordFinder {
//~ Instance/static variables ...............................................
private boolean inComment;
//~ Constructors ............................................................
/**
* Creates a new JavaWordFinder object.
*
* @param inText the String to search
*/
public JavaWordFinder(String inText) {
super(inText);
}
/**
* Creates a new JavaWordFinder object.
*/
public JavaWordFinder() {
super();
}
//~ Methods .................................................................
/**
* This method scans the text from the end of the last word, and returns a
* new Word object corresponding to the next word.
*
* @return the next word.
* @throws WordNotFoundException search string contains no more words.
*/
public Word next() {
if (nextWord == null) {
throw new WordNotFoundException("No more words found.");
}
currentWord.copy(nextWord);
int current = sentenceIterator.current();
setSentenceIterator(currentWord);
int i = currentWord.getEnd();
boolean finished = false;
boolean started = false;
search:
while (i < text.length() && !finished) {
i = ignore(i, '@');
i = ignore(i, "", "
");
i = ignore(i, "", "
");
i = ignore(i, '<', '>');
if (i >= text.length()) break search;
char currentLetter = text.charAt(i);
if (inComment) {
//Reset on new line.
if (currentLetter == '\n') {
inComment = false;
i++;
continue search;
} else if (!isWordChar(i)) {
i++;
continue search;
}
//Find words.
while (i < text.length() - 1) {
if (!started && isWordChar(i)) {
nextWord.setStart(i);
started = true;
} else if (started && !isWordChar(i)) {
nextWord.setText(text.substring(nextWord.getStart(), i));
finished = true;
break search;
}
currentLetter = text.charAt(++i);
}
} else if (currentLetter == '*') {
inComment = true;
i++;
} else {
i++;
}
}
if (!started) {
nextWord = null;
} else if (!finished) {
nextWord.setText(text.substring(nextWord.getStart(), i));
}
return currentWord;
}
/**
* Initializes this word finder
*/
protected void init() {
// sentenceIterator = BreakIterator.getSentenceInstance();
// sentenceIterator.setText(text);
super.init();
inComment = false;
}
}