diff options
author | 2015-04-16 23:46:39 +0000 | |
---|---|---|
committer | 2015-04-16 23:46:40 +0000 | |
commit | c155f7f5fd4aeefcce69a06755a0b3c1360277b8 (patch) | |
tree | d492b86a9ce5c8e519aa5574354fe6ac18408274 /java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java | |
parent | 3a5de64110eab7ae0b6b1da86b5ce30d5b16bd7a (diff) | |
parent | 8ff42d158193001b3abdd13c768f693c532be8aa (diff) | |
download | latinime-c155f7f5fd4aeefcce69a06755a0b3c1360277b8.tar.gz latinime-c155f7f5fd4aeefcce69a06755a0b3c1360277b8.tar.xz latinime-c155f7f5fd4aeefcce69a06755a0b3c1360277b8.zip |
Merge "Strip quotes from begining/end of a word before checking its validity."
Diffstat (limited to 'java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java index fd5c54c09..d6de94532 100644 --- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java +++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java @@ -58,6 +58,9 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session { protected final SuggestionsCache mSuggestionsCache = new SuggestionsCache(); private final ContentObserver mObserver; + private static final String quotesRegexp = + "\\u0022|\\u0027|\\u0060|\\u00B4|\\u2018|\\u2018|\\u201C|\\u201D"; + private static final class SuggestionsParams { public final String[] mSuggestions; public final int mFlags; @@ -224,12 +227,16 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session { protected SuggestionsInfo onGetSuggestionsInternal( final TextInfo textInfo, final NgramContext ngramContext, final int suggestionsLimit) { try { - final String inText = textInfo.getText(); + final String text = textInfo.getText(). + replaceAll(AndroidSpellCheckerService.APOSTROPHE, + AndroidSpellCheckerService.SINGLE_QUOTE). + replaceAll("^" + quotesRegexp, ""). + replaceAll(quotesRegexp + "$", ""); final SuggestionsParams cachedSuggestionsParams = - mSuggestionsCache.getSuggestionsFromCache(inText, ngramContext); + mSuggestionsCache.getSuggestionsFromCache(text, ngramContext); if (cachedSuggestionsParams != null) { - Log.d(TAG, "onGetSuggestionsInternal() : Cache hit for [" + inText + "]"); + Log.d(TAG, "onGetSuggestionsInternal() : Cache hit for [" + text + "]"); return new SuggestionsInfo( cachedSuggestionsParams.mFlags, cachedSuggestionsParams.mSuggestions); } @@ -241,10 +248,10 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session { } // Handle special patterns like email, URI, telephone number. - final int checkability = getCheckabilityInScript(inText, mScript); + final int checkability = getCheckabilityInScript(text, mScript); if (CHECKABILITY_CHECKABLE != checkability) { if (CHECKABILITY_CONTAINS_PERIOD == checkability) { - final String[] splitText = inText.split(Constants.REGEXP_PERIOD); + final String[] splitText = text.split(Constants.REGEXP_PERIOD); boolean allWordsAreValid = true; for (final String word : splitText) { if (!mService.isValidWord(mLocale, word)) { @@ -259,15 +266,13 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session { TextUtils.join(Constants.STRING_SPACE, splitText) }); } } - return mService.isValidWord(mLocale, inText) ? + return mService.isValidWord(mLocale, text) ? AndroidSpellCheckerService.getInDictEmptySuggestions() : AndroidSpellCheckerService.getNotInDictEmptySuggestions( CHECKABILITY_CONTAINS_PERIOD == checkability /* reportAsTypo */); } // Handle normal words. - final String text = inText.replaceAll( - AndroidSpellCheckerService.APOSTROPHE, AndroidSpellCheckerService.SINGLE_QUOTE); final int capitalizeType = StringUtils.getCapitalizationType(text); if (isInDictForAnyCapitalization(text, capitalizeType)) { |