aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/settings
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/latin/settings')
-rw-r--r--java/src/com/android/inputmethod/latin/settings/Settings.java4
-rw-r--r--java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java38
2 files changed, 20 insertions, 22 deletions
diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java
index 7db10714a..9bf269b6e 100644
--- a/java/src/com/android/inputmethod/latin/settings/Settings.java
+++ b/java/src/com/android/inputmethod/latin/settings/Settings.java
@@ -181,10 +181,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
return mSettingsValues.mIsInternal;
}
- public String getWordSeparators() {
- return mSettingsValues.mSpacingAndPunctuations.mWordSeparators;
- }
-
public boolean isWordSeparator(final int code) {
return mSettingsValues.isWordSeparator(code);
}
diff --git a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
index 29bd3e7b3..8ba32ff76 100644
--- a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
+++ b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
@@ -32,11 +32,11 @@ 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 int[] mSortedWordSeparators;
public final SuggestedWords mSuggestPuncList;
- public final String mWordSeparators;
private final int mSentenceSeparator;
public final String mSentenceSeparatorAndSpace;
public final boolean mCurrentLanguageHasSpaces;
@@ -44,19 +44,20 @@ 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));
+ mSortedWordSeparators = StringUtils.toSortedCodePointArray(
+ res.getString(R.string.symbols_word_separators));
final String[] suggestPuncsSpec = KeySpecParser.splitKeySpecs(res.getString(
R.string.suggested_punctuations));
mSuggestPuncList = createSuggestPuncList(suggestPuncsSpec);
- mWordSeparators = res.getString(R.string.symbols_word_separators);
mSentenceSeparator = res.getInteger(R.integer.sentence_separator);
mSentenceSeparatorAndSpace = new String(new int[] {
mSentenceSeparator, Constants.CODE_SPACE }, 0, 2);
@@ -74,6 +75,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,
@@ -90,11 +92,11 @@ public final class SpacingAndPunctuations {
}
public boolean isWordSeparator(final int code) {
- return mWordSeparators.contains(String.valueOf((char)code));
+ return Arrays.binarySearch(mSortedWordSeparators, code) >= 0;
}
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 +104,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) {