am d979d416: Merge "Special case periods in the spell checker"
* commit 'd979d416c102c45773f4684473953f6fed8f983f': Special case periods in the spell checkermain
commit
c0586f1b36
|
@ -214,6 +214,9 @@ public final class Constants {
|
||||||
public static final int CODE_INVERTED_QUESTION_MARK = 0xBF; // ¿
|
public static final int CODE_INVERTED_QUESTION_MARK = 0xBF; // ¿
|
||||||
public static final int CODE_INVERTED_EXCLAMATION_MARK = 0xA1; // ¡
|
public static final int CODE_INVERTED_EXCLAMATION_MARK = 0xA1; // ¡
|
||||||
|
|
||||||
|
public static final String REGEXP_PERIOD = "\\.";
|
||||||
|
public static final String STRING_SPACE = " ";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Special keys code. Must be negative.
|
* Special keys code. Must be negative.
|
||||||
* These should be aligned with {@link KeyboardCodesSet#ID_TO_NAME},
|
* These should be aligned with {@link KeyboardCodesSet#ID_TO_NAME},
|
||||||
|
|
|
@ -282,6 +282,22 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session {
|
||||||
return AndroidSpellCheckerService.getNotInDictEmptySuggestions(
|
return AndroidSpellCheckerService.getNotInDictEmptySuggestions(
|
||||||
false /* reportAsTypo */);
|
false /* reportAsTypo */);
|
||||||
}
|
}
|
||||||
|
if (CHECKABILITY_CONTAINS_PERIOD == checkability) {
|
||||||
|
final String[] splitText = inText.split(Constants.REGEXP_PERIOD);
|
||||||
|
boolean allWordsAreValid = true;
|
||||||
|
for (final String word : splitText) {
|
||||||
|
if (!dictInfo.mDictionary.isValidWord(word)) {
|
||||||
|
allWordsAreValid = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (allWordsAreValid) {
|
||||||
|
return new SuggestionsInfo(SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO
|
||||||
|
| SuggestionsInfo.RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS,
|
||||||
|
new String[] {
|
||||||
|
TextUtils.join(Constants.STRING_SPACE, splitText) });
|
||||||
|
}
|
||||||
|
}
|
||||||
return dictInfo.mDictionary.isValidWord(inText)
|
return dictInfo.mDictionary.isValidWord(inText)
|
||||||
? AndroidSpellCheckerService.getInDictEmptySuggestions()
|
? AndroidSpellCheckerService.getInDictEmptySuggestions()
|
||||||
: AndroidSpellCheckerService.getNotInDictEmptySuggestions(
|
: AndroidSpellCheckerService.getNotInDictEmptySuggestions(
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class AndroidSpellCheckerServiceTest extends InputTestsBase {
|
||||||
// it yields 5).
|
// it yields 5).
|
||||||
assertTrue(suggestions.length >= 2);
|
assertTrue(suggestions.length >= 2);
|
||||||
// We also assume the top suggestion should be "this".
|
// We also assume the top suggestion should be "this".
|
||||||
assertEquals("", "this", suggestions[0]);
|
assertEquals("Test basic spell checking", "this", suggestions[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRussianSpellchecker() {
|
public void testRussianSpellchecker() {
|
||||||
|
@ -62,4 +62,21 @@ public class AndroidSpellCheckerServiceTest extends InputTestsBase {
|
||||||
// Russian dictionary.
|
// Russian dictionary.
|
||||||
assertEquals("", "года", suggestions[0]);
|
assertEquals("", "года", suggestions[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testSpellcheckWithPeriods() {
|
||||||
|
changeLanguage("en_US");
|
||||||
|
mEditText.setText("I'm.sure ");
|
||||||
|
mEditText.setSelection(mEditText.getText().length());
|
||||||
|
mEditText.onAttachedToWindow();
|
||||||
|
sleep(1000);
|
||||||
|
runMessages();
|
||||||
|
sleep(1000);
|
||||||
|
|
||||||
|
final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
|
||||||
|
// If no span, the following will crash
|
||||||
|
final String[] suggestions = span.getSuggestions();
|
||||||
|
// The first suggestion should be "I'm sure".
|
||||||
|
assertEquals("Test spell checking of mistyped period for space", "I'm sure",
|
||||||
|
suggestions[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue