Loading java/src/com/android/inputmethod/latin/Suggest.java +1 −1 Original line number Diff line number Diff line Loading @@ -94,8 +94,8 @@ public final class Suggest { final boolean blockOffensiveWords, final boolean isCorrectionEnabled, final int[] additionalFeaturesOptions, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { final int trailingSingleQuotesCount = wordComposer.trailingSingleQuotesCount(); final String typedWord = wordComposer.getTypedWord(); final int trailingSingleQuotesCount = StringUtils.getTrailingSingleQuotesCount(typedWord); final String consideredWord = trailingSingleQuotesCount > 0 ? typedWord.substring(0, typedWord.length() - trailingSingleQuotesCount) : typedWord; Loading java/src/com/android/inputmethod/latin/WordComposer.java +2 −10 Original line number Diff line number Diff line Loading @@ -149,7 +149,8 @@ public final class WordComposer { public int copyCodePointsExceptTrailingSingleQuotesAndReturnCodePointCount( final int[] destination) { // lastIndex is exclusive final int lastIndex = mTypedWordCache.length() - trailingSingleQuotesCount(); final int lastIndex = mTypedWordCache.length() - StringUtils.getTrailingSingleQuotesCount(mTypedWordCache); if (lastIndex <= 0) { // The string is empty or contains only single quotes. return 0; Loading Loading @@ -331,15 +332,6 @@ public final class WordComposer { return mIsFirstCharCapitalized; } public int trailingSingleQuotesCount() { final int lastIndex = mTypedWordCache.length() - 1; int i = lastIndex; while (i >= 0 && mTypedWordCache.charAt(i) == Constants.CODE_SINGLE_QUOTE) { --i; } return lastIndex - i; } /** * Whether or not all of the user typed chars are upper case * @return true if all user typed chars are upper case, false otherwise Loading java/src/com/android/inputmethod/latin/utils/DistracterFilter.java +4 −3 Original line number Diff line number Diff line Loading @@ -86,9 +86,10 @@ public class DistracterFilter { coordinates = mKeyboard.getCoordinates(codePoints); composer.setComposingWord(codePoints, coordinates, prevWord); final int trailingSingleQuotesCount = composer.trailingSingleQuotesCount(); final String consideredWord = trailingSingleQuotesCount > 0 ? testedWord.substring(0, testedWord.length() - trailingSingleQuotesCount) : testedWord; final int trailingSingleQuotesCount = StringUtils.getTrailingSingleQuotesCount(testedWord); final String consideredWord = trailingSingleQuotesCount > 0 ? testedWord.substring(0, testedWord.length() - trailingSingleQuotesCount) : testedWord; final AsyncResultHolder<Boolean> holder = new AsyncResultHolder<Boolean>(); final OnGetSuggestedWordsCallback callback = new OnGetSuggestedWordsCallback() { @Override Loading java/src/com/android/inputmethod/latin/utils/StringUtils.java +9 −0 Original line number Diff line number Diff line Loading @@ -538,6 +538,15 @@ public final class StringUtils { ? casedText.codePointAt(0) : CODE_UNSPECIFIED; } public static int getTrailingSingleQuotesCount(final CharSequence charSequence) { final int lastIndex = charSequence.length() - 1; int i = lastIndex; while (i >= 0 && charSequence.charAt(i) == Constants.CODE_SINGLE_QUOTE) { --i; } return lastIndex - i; } @UsedForTesting public static class Stringizer<E> { public String stringize(final E element) { Loading tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java +10 −0 Original line number Diff line number Diff line Loading @@ -372,4 +372,14 @@ public class StringAndJsonUtilsTests extends AndroidTestCase { assertTrue("copyCodePointsAndReturnCodePointCount throws when array is too small", exceptionHappened); } public void testGetTrailingSingleQuotesCount() { assertEquals(0, StringUtils.getTrailingSingleQuotesCount("")); assertEquals(1, StringUtils.getTrailingSingleQuotesCount("'")); assertEquals(5, StringUtils.getTrailingSingleQuotesCount("'''''")); assertEquals(0, StringUtils.getTrailingSingleQuotesCount("a")); assertEquals(0, StringUtils.getTrailingSingleQuotesCount("'this")); assertEquals(1, StringUtils.getTrailingSingleQuotesCount("'word'")); assertEquals(0, StringUtils.getTrailingSingleQuotesCount("I'm")); } } Loading
java/src/com/android/inputmethod/latin/Suggest.java +1 −1 Original line number Diff line number Diff line Loading @@ -94,8 +94,8 @@ public final class Suggest { final boolean blockOffensiveWords, final boolean isCorrectionEnabled, final int[] additionalFeaturesOptions, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { final int trailingSingleQuotesCount = wordComposer.trailingSingleQuotesCount(); final String typedWord = wordComposer.getTypedWord(); final int trailingSingleQuotesCount = StringUtils.getTrailingSingleQuotesCount(typedWord); final String consideredWord = trailingSingleQuotesCount > 0 ? typedWord.substring(0, typedWord.length() - trailingSingleQuotesCount) : typedWord; Loading
java/src/com/android/inputmethod/latin/WordComposer.java +2 −10 Original line number Diff line number Diff line Loading @@ -149,7 +149,8 @@ public final class WordComposer { public int copyCodePointsExceptTrailingSingleQuotesAndReturnCodePointCount( final int[] destination) { // lastIndex is exclusive final int lastIndex = mTypedWordCache.length() - trailingSingleQuotesCount(); final int lastIndex = mTypedWordCache.length() - StringUtils.getTrailingSingleQuotesCount(mTypedWordCache); if (lastIndex <= 0) { // The string is empty or contains only single quotes. return 0; Loading Loading @@ -331,15 +332,6 @@ public final class WordComposer { return mIsFirstCharCapitalized; } public int trailingSingleQuotesCount() { final int lastIndex = mTypedWordCache.length() - 1; int i = lastIndex; while (i >= 0 && mTypedWordCache.charAt(i) == Constants.CODE_SINGLE_QUOTE) { --i; } return lastIndex - i; } /** * Whether or not all of the user typed chars are upper case * @return true if all user typed chars are upper case, false otherwise Loading
java/src/com/android/inputmethod/latin/utils/DistracterFilter.java +4 −3 Original line number Diff line number Diff line Loading @@ -86,9 +86,10 @@ public class DistracterFilter { coordinates = mKeyboard.getCoordinates(codePoints); composer.setComposingWord(codePoints, coordinates, prevWord); final int trailingSingleQuotesCount = composer.trailingSingleQuotesCount(); final String consideredWord = trailingSingleQuotesCount > 0 ? testedWord.substring(0, testedWord.length() - trailingSingleQuotesCount) : testedWord; final int trailingSingleQuotesCount = StringUtils.getTrailingSingleQuotesCount(testedWord); final String consideredWord = trailingSingleQuotesCount > 0 ? testedWord.substring(0, testedWord.length() - trailingSingleQuotesCount) : testedWord; final AsyncResultHolder<Boolean> holder = new AsyncResultHolder<Boolean>(); final OnGetSuggestedWordsCallback callback = new OnGetSuggestedWordsCallback() { @Override Loading
java/src/com/android/inputmethod/latin/utils/StringUtils.java +9 −0 Original line number Diff line number Diff line Loading @@ -538,6 +538,15 @@ public final class StringUtils { ? casedText.codePointAt(0) : CODE_UNSPECIFIED; } public static int getTrailingSingleQuotesCount(final CharSequence charSequence) { final int lastIndex = charSequence.length() - 1; int i = lastIndex; while (i >= 0 && charSequence.charAt(i) == Constants.CODE_SINGLE_QUOTE) { --i; } return lastIndex - i; } @UsedForTesting public static class Stringizer<E> { public String stringize(final E element) { Loading
tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java +10 −0 Original line number Diff line number Diff line Loading @@ -372,4 +372,14 @@ public class StringAndJsonUtilsTests extends AndroidTestCase { assertTrue("copyCodePointsAndReturnCodePointCount throws when array is too small", exceptionHappened); } public void testGetTrailingSingleQuotesCount() { assertEquals(0, StringUtils.getTrailingSingleQuotesCount("")); assertEquals(1, StringUtils.getTrailingSingleQuotesCount("'")); assertEquals(5, StringUtils.getTrailingSingleQuotesCount("'''''")); assertEquals(0, StringUtils.getTrailingSingleQuotesCount("a")); assertEquals(0, StringUtils.getTrailingSingleQuotesCount("'this")); assertEquals(1, StringUtils.getTrailingSingleQuotesCount("'word'")); assertEquals(0, StringUtils.getTrailingSingleQuotesCount("I'm")); } }