From 8e2a943ae8dbb02487d48b92dbb777506836c27e Mon Sep 17 00:00:00 2001 From: Peter Edberg Date: Sun, 22 Jan 2017 09:21:04 +0000 Subject: [PATCH] ICU-12948 Handle new KeyType values, codes X-SVN-Rev: 39595 --- .../com/ibm/icu/impl/locale/KeyTypeData.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java index cea97d8597f..e084d178977 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java @@ -30,7 +30,7 @@ import com.ibm.icu.util.UResourceBundleIterator; public class KeyTypeData { public enum ValueType { - single, multiple, incremental, any + single, multiple, incremental, languageTag, any } private static abstract class SpecialTypeHandler { @@ -48,6 +48,14 @@ public class KeyTypeData { } } + private static class LanguageTagTypeHandler extends SpecialTypeHandler { + private static final Pattern pat = Pattern.compile("[a-zA-Z]{3,8}"); + @Override + boolean isWellFormed(String value) { + return pat.matcher(value).matches(); + } + } + private static class ReorderCodeTypeHandler extends SpecialTypeHandler { private static final Pattern pat = Pattern.compile("[a-zA-Z]{3,8}(-[a-zA-Z]{3,8})*"); @Override @@ -82,6 +90,7 @@ public class KeyTypeData { private enum SpecialType { CODEPOINTS(new CodepointsTypeHandler()), + LANGUAGE_TAG(new LanguageTagTypeHandler()), REORDER_CODE(new ReorderCodeTypeHandler()), RG_KEY_VALUE(new RgKeyValueTypeHandler()), SUBDIVISION_CODE(new SubdivisionKeyValueTypeHandler()), @@ -411,6 +420,8 @@ keyInfo{ } valueType{ ca{"incremental"} + h0{"language-tag"} + h1{"language-tag"} kr{"multiple"} vt{"multiple"} x0{"any"} @@ -433,7 +444,11 @@ keyInfo{ _deprecatedKeys.add(key2); break; case valueType: - _valueTypes.put(key2, ValueType.valueOf(value2)); + if (value2.equals("language-tag")) { + _valueTypes.put(key2, ValueType.languageTag); + } else { + _valueTypes.put(key2, ValueType.valueOf(value2)); + } break; } } -- 2.40.0