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

Commit d20c5a78 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Separate StringUtils.capitalizeFirstCharacter

Bug: 8582061
Change-Id: Iac8f65defdd92d7df533bdf0e2937ad897d96363
parent 4fdfce6d
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));