diff options
author | Elliott Hughes <enh@google.com> | 2014-04-04 16:14:21 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2014-04-04 16:14:21 -0700 |
commit | a2f8e8a253a93c8df8b0e6f458f4c573d48b9ed9 (patch) | |
tree | 1fc4950acb9bd939e4f81cd2cb0c1aed5524218d /luni/src/main | |
parent | df945d726e02034dafdcf7469f71865b86dc3e9d (diff) | |
download | libcore-a2f8e8a253a93c8df8b0e6f458f4c573d48b9ed9.zip libcore-a2f8e8a253a93c8df8b0e6f458f4c573d48b9ed9.tar.gz libcore-a2f8e8a253a93c8df8b0e6f458f4c573d48b9ed9.tar.bz2 |
Fix Greek uppercasing.
This matches Chrome's behavior.
Bug: 13246961
Change-Id: I1954da3116a1759cb650bffed558dced5770e3ec
Diffstat (limited to 'luni/src/main')
-rw-r--r-- | luni/src/main/java/java/lang/CaseMapper.java | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/luni/src/main/java/java/lang/CaseMapper.java b/luni/src/main/java/java/lang/CaseMapper.java index 5ec41f5..4e411d1 100644 --- a/luni/src/main/java/java/lang/CaseMapper.java +++ b/luni/src/main/java/java/lang/CaseMapper.java @@ -18,6 +18,7 @@ package java.lang; import java.util.Locale; import libcore.icu.ICU; +import libcore.icu.Transliterator; /** * Performs case operations as described by http://unicode.org/reports/tr21/tr21-5.html. @@ -45,6 +46,7 @@ class CaseMapper { */ public static String toLowerCase(Locale locale, String s, char[] value, int offset, int count) { // Punt hard cases to ICU4C. + // Note that Greek isn't a particularly hard case for toLowerCase, only toUpperCase. String languageCode = locale.getLanguage(); if (languageCode.equals("tr") || languageCode.equals("az") || languageCode.equals("lt")) { return ICU.toLowerCase(s, locale.toString()); @@ -139,11 +141,20 @@ class CaseMapper { return index; } + private static final ThreadLocal<Transliterator> EL_UPPER = new ThreadLocal<Transliterator>() { + @Override protected Transliterator initialValue() { + return new Transliterator("el-Upper"); + } + }; + public static String toUpperCase(Locale locale, String s, char[] value, int offset, int count) { String languageCode = locale.getLanguage(); if (languageCode.equals("tr") || languageCode.equals("az") || languageCode.equals("lt")) { return ICU.toUpperCase(s, locale.toString()); } + if (languageCode.equals("el")) { + return EL_UPPER.get().transliterate(s); + } char[] output = null; int i = 0; |