aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2013-04-10 06:30:32 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-04-10 06:30:33 +0000
commit10af4b6e45689cba9bdc8c22f1bb76bf8bd2516b (patch)
treef77be0fd676cf5fb7bb4b38e82415fefc214fa3a
parent87fdde6ec48844ddbb482c50fbda226c63ca5e85 (diff)
parentd20c5a78e2819c21ecc5dff04bc82e9078c79dd4 (diff)
downloadlatinime-10af4b6e45689cba9bdc8c22f1bb76bf8bd2516b.tar.gz
latinime-10af4b6e45689cba9bdc8c22f1bb76bf8bd2516b.tar.xz
latinime-10af4b6e45689cba9bdc8c22f1bb76bf8bd2516b.zip
Merge "Separate StringUtils.capitalizeFirstCharacter"
-rw-r--r--java/src/com/android/inputmethod/keyboard/MainKeyboardView.java2
-rw-r--r--java/src/com/android/inputmethod/latin/StringUtils.java12
-rw-r--r--java/src/com/android/inputmethod/latin/SubtypeLocale.java4
-rw-r--r--tests/src/com/android/inputmethod/keyboard/SpacebarTextTests.java3
-rw-r--r--tests/src/com/android/inputmethod/latin/StringUtilsTests.java4
5 files changed, 16 insertions, 9 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index 745e7dfed..dabc3075e 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -1460,7 +1460,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
return "";
}
final Locale locale = SubtypeLocale.getSubtypeLocale(subtype);
- return StringUtils.toTitleCase(locale.getLanguage(), locale);
+ return StringUtils.capitalizeFirstCharacter(locale.getLanguage(), locale);
}
// Get InputMethodSubtype's middle display name in its locale.
diff --git a/java/src/com/android/inputmethod/latin/StringUtils.java b/java/src/com/android/inputmethod/latin/StringUtils.java
index 59ad28fc9..4de104af5 100644
--- a/java/src/com/android/inputmethod/latin/StringUtils.java
+++ b/java/src/com/android/inputmethod/latin/StringUtils.java
@@ -106,10 +106,18 @@ public final class StringUtils {
}
}
+ public static String capitalizeFirstCharacter(final String s, final Locale locale) {
+ if (s.length() <= 1) {
+ return s.toUpperCase(locale);
+ }
+ // Please refer to the comment below in {@link #toTitleCase(String,Locale)}.
+ final int cutoff = s.offsetByCodePoints(0, 1);
+ return s.substring(0, cutoff).toUpperCase(locale) + s.substring(cutoff);
+ }
+
public static String toTitleCase(final String s, final Locale locale) {
if (s.length() <= 1) {
- // TODO: is this really correct? Shouldn't this be s.toUpperCase()?
- return s;
+ return s.toUpperCase(locale);
}
// TODO: fix the bugs below
// - This does not work for Greek, because it returns upper case instead of title case.
diff --git a/java/src/com/android/inputmethod/latin/SubtypeLocale.java b/java/src/com/android/inputmethod/latin/SubtypeLocale.java
index 5e28cc2d0..ae9cd8bde 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeLocale.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeLocale.java
@@ -183,7 +183,7 @@ public final class SubtypeLocale {
final Locale locale = LocaleUtils.constructLocaleFromString(localeString);
displayName = locale.getDisplayName(displayLocale);
}
- return StringUtils.toTitleCase(displayName, displayLocale);
+ return StringUtils.capitalizeFirstCharacter(displayName, displayLocale);
}
// InputMethodSubtype's display name in its locale.
@@ -243,7 +243,7 @@ public final class SubtypeLocale {
}
}
};
- return StringUtils.toTitleCase(
+ return StringUtils.capitalizeFirstCharacter(
getSubtypeName.runInLocale(sResources, displayLocale), displayLocale);
}
diff --git a/tests/src/com/android/inputmethod/keyboard/SpacebarTextTests.java b/tests/src/com/android/inputmethod/keyboard/SpacebarTextTests.java
index 1398db97c..864e78f43 100644
--- a/tests/src/com/android/inputmethod/keyboard/SpacebarTextTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/SpacebarTextTests.java
@@ -113,7 +113,8 @@ public class SpacebarTextTests extends AndroidTestCase {
final String subtypeName = SubtypeLocale.getSubtypeDisplayName(subtype);
final Locale locale = SubtypeLocale.getSubtypeLocale(subtype);
final String spacebarText = MainKeyboardView.getShortDisplayName(subtype);
- final String languageCode = StringUtils.toTitleCase(locale.getLanguage(), locale);
+ final String languageCode = StringUtils.capitalizeFirstCharacter(
+ locale.getLanguage(), locale);
if (SubtypeLocale.isNoLanguage(subtype)) {
assertEquals(subtypeName, "", spacebarText);
} else {
diff --git a/tests/src/com/android/inputmethod/latin/StringUtilsTests.java b/tests/src/com/android/inputmethod/latin/StringUtilsTests.java
index 966919ed3..9760f0bd1 100644
--- a/tests/src/com/android/inputmethod/latin/StringUtilsTests.java
+++ b/tests/src/com/android/inputmethod/latin/StringUtilsTests.java
@@ -106,9 +106,7 @@ public class StringUtilsTests extends AndroidTestCase {
StringUtils.toTitleCase("iab", new Locale("tr")));
assertEquals("Aib",
StringUtils.toTitleCase("AİB", new Locale("tr")));
- // For one character, toTitleCase returns the string as is. Not sure what the motivation
- // is, but that's how it works now.
- assertEquals("a",
+ assertEquals("A",
StringUtils.toTitleCase("a", Locale.ENGLISH));
assertEquals("A",
StringUtils.toTitleCase("A", Locale.ENGLISH));