aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-01-20 15:41:50 +0900
committerTadashi G. Takaoka <takaoka@google.com>2014-01-20 18:33:45 +0900
commit837cdd738b7ddbeac04b15230f01e44d247bd50a (patch)
tree19f251f5ad15cd9b09b0941fd9d5ee76fad1e064 /java
parent3f3b0af5b759ef87fbc42935a53b6827c7237f05 (diff)
downloadlatinime-837cdd738b7ddbeac04b15230f01e44d247bd50a.tar.gz
latinime-837cdd738b7ddbeac04b15230f01e44d247bd50a.tar.xz
latinime-837cdd738b7ddbeac04b15230f01e44d247bd50a.zip
Add SpacingAndPunctuationsTests
Change-Id: I78d488ad84a11af809ee1f8d3d2fa01a89fbfa28
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java31
-rw-r--r--java/src/com/android/inputmethod/latin/utils/StringUtils.java7
2 files changed, 23 insertions, 15 deletions
diff --git a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
index 29bd3e7b3..1a6f622bc 100644
--- a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
+++ b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
@@ -32,9 +32,9 @@ import java.util.Arrays;
import java.util.Locale;
public final class SpacingAndPunctuations {
- private final int[] mSymbolsPrecededBySpace;
- private final int[] mSymbolsFollowedBySpace;
- private final int[] mWordConnectors;
+ private final int[] mSortedSymbolsPrecededBySpace;
+ private final int[] mSortedSymbolsFollowedBySpace;
+ private final int[] mSortedWordConnectors;
public final SuggestedWords mSuggestPuncList;
public final String mWordSeparators;
private final int mSentenceSeparator;
@@ -44,15 +44,15 @@ public final class SpacingAndPunctuations {
public final boolean mUsesGermanRules;
public SpacingAndPunctuations(final Resources res) {
- mSymbolsPrecededBySpace =
- StringUtils.toCodePointArray(res.getString(R.string.symbols_preceded_by_space));
- Arrays.sort(mSymbolsPrecededBySpace);
- mSymbolsFollowedBySpace =
- StringUtils.toCodePointArray(res.getString(R.string.symbols_followed_by_space));
- Arrays.sort(mSymbolsFollowedBySpace);
- mWordConnectors =
- StringUtils.toCodePointArray(res.getString(R.string.symbols_word_connectors));
- Arrays.sort(mWordConnectors);
+ // To be able to binary search the code point. See {@link #isUsuallyPrecededBySpace(int)}.
+ mSortedSymbolsPrecededBySpace = StringUtils.toSortedCodePointArray(
+ res.getString(R.string.symbols_preceded_by_space));
+ // To be able to binary search the code point. See {@link #isUsuallyFollowedBySpace(int)}.
+ mSortedSymbolsFollowedBySpace = StringUtils.toSortedCodePointArray(
+ res.getString(R.string.symbols_followed_by_space));
+ // To be able to binary search the code point. See {@link #isWordConnector(int)}.
+ mSortedWordConnectors = StringUtils.toSortedCodePointArray(
+ res.getString(R.string.symbols_word_connectors));
final String[] suggestPuncsSpec = KeySpecParser.splitKeySpecs(res.getString(
R.string.suggested_punctuations));
mSuggestPuncList = createSuggestPuncList(suggestPuncsSpec);
@@ -74,6 +74,7 @@ public final class SpacingAndPunctuations {
if (puncs != null) {
for (final String puncSpec : puncs) {
// TODO: Stop using KeySpceParser.getLabel().
+ // TODO: Punctuation suggestions should honor RTL languages.
puncList.add(new SuggestedWordInfo(KeySpecParser.getLabel(puncSpec),
SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_HARDCODED,
Dictionary.DICTIONARY_HARDCODED,
@@ -94,7 +95,7 @@ public final class SpacingAndPunctuations {
}
public boolean isWordConnector(final int code) {
- return Arrays.binarySearch(mWordConnectors, code) >= 0;
+ return Arrays.binarySearch(mSortedWordConnectors, code) >= 0;
}
public boolean isWordCodePoint(final int code) {
@@ -102,11 +103,11 @@ public final class SpacingAndPunctuations {
}
public boolean isUsuallyPrecededBySpace(final int code) {
- return Arrays.binarySearch(mSymbolsPrecededBySpace, code) >= 0;
+ return Arrays.binarySearch(mSortedSymbolsPrecededBySpace, code) >= 0;
}
public boolean isUsuallyFollowedBySpace(final int code) {
- return Arrays.binarySearch(mSymbolsFollowedBySpace, code) >= 0;
+ return Arrays.binarySearch(mSortedSymbolsFollowedBySpace, code) >= 0;
}
public boolean isSentenceSeparator(final int code) {
diff --git a/java/src/com/android/inputmethod/latin/utils/StringUtils.java b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
index c5ed39310..699a0b80e 100644
--- a/java/src/com/android/inputmethod/latin/utils/StringUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
@@ -22,6 +22,7 @@ import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.latin.Constants;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Locale;
public final class StringUtils {
@@ -183,6 +184,12 @@ public final class StringUtils {
return codePoints;
}
+ public static int[] toSortedCodePointArray(final String string) {
+ final int[] codePoints = toCodePointArray(string);
+ Arrays.sort(codePoints);
+ return codePoints;
+ }
+
// This method assumes the text is not null. For the empty string, it returns CAPITALIZE_NONE.
public static int getCapitalizationType(final String text) {
// If the first char is not uppercase, then the word is either all lower case or