Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 10af4b6e authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Separate StringUtils.capitalizeFirstCharacter"

parents 87fdde6e d20c5a78
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -1460,7 +1460,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
            return "";
            return "";
        }
        }
        final Locale locale = SubtypeLocale.getSubtypeLocale(subtype);
        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.
    // Get InputMethodSubtype's middle display name in its locale.
+10 −2
Original line number Original line Diff line number Diff line
@@ -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) {
    public static String toTitleCase(final String s, final Locale locale) {
        if (s.length() <= 1) {
        if (s.length() <= 1) {
            // TODO: is this really correct? Shouldn't this be s.toUpperCase()?
            return s.toUpperCase(locale);
            return s;
        }
        }
        // TODO: fix the bugs below
        // TODO: fix the bugs below
        // - This does not work for Greek, because it returns upper case instead of title case.
        // - This does not work for Greek, because it returns upper case instead of title case.
+2 −2
Original line number Original line Diff line number Diff line
@@ -183,7 +183,7 @@ public final class SubtypeLocale {
            final Locale locale = LocaleUtils.constructLocaleFromString(localeString);
            final Locale locale = LocaleUtils.constructLocaleFromString(localeString);
            displayName = locale.getDisplayName(displayLocale);
            displayName = locale.getDisplayName(displayLocale);
        }
        }
        return StringUtils.toTitleCase(displayName, displayLocale);
        return StringUtils.capitalizeFirstCharacter(displayName, displayLocale);
    }
    }


    // InputMethodSubtype's display name in its locale.
    // 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);
                getSubtypeName.runInLocale(sResources, displayLocale), displayLocale);
    }
    }


+2 −1
Original line number Original line Diff line number Diff line
@@ -113,7 +113,8 @@ public class SpacebarTextTests extends AndroidTestCase {
            final String subtypeName = SubtypeLocale.getSubtypeDisplayName(subtype);
            final String subtypeName = SubtypeLocale.getSubtypeDisplayName(subtype);
            final Locale locale = SubtypeLocale.getSubtypeLocale(subtype);
            final Locale locale = SubtypeLocale.getSubtypeLocale(subtype);
            final String spacebarText = MainKeyboardView.getShortDisplayName(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)) {
            if (SubtypeLocale.isNoLanguage(subtype)) {
                assertEquals(subtypeName, "", spacebarText);
                assertEquals(subtypeName, "", spacebarText);
            } else {
            } else {
+1 −3
Original line number Original line Diff line number Diff line
@@ -106,9 +106,7 @@ public class StringUtilsTests extends AndroidTestCase {
                StringUtils.toTitleCase("iab", new Locale("tr")));
                StringUtils.toTitleCase("iab", new Locale("tr")));
        assertEquals("Aib",
        assertEquals("Aib",
                StringUtils.toTitleCase("AİB", new Locale("tr")));
                StringUtils.toTitleCase("AİB", new Locale("tr")));
        // For one character, toTitleCase returns the string as is. Not sure what the motivation
        assertEquals("A",
        // is, but that's how it works now.
        assertEquals("a",
                StringUtils.toTitleCase("a", Locale.ENGLISH));
                StringUtils.toTitleCase("a", Locale.ENGLISH));
        assertEquals("A",
        assertEquals("A",
                StringUtils.toTitleCase("A", Locale.ENGLISH));
                StringUtils.toTitleCase("A", Locale.ENGLISH));