From b1db44509377ee42f0f1830abc28d2e04144e991 Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Wed, 14 Jan 2026 07:40:29 -0800 Subject: [PATCH 01/20] Interim checkin --- .../data/ucd/dev/PropertyValueAliases.txt | 2 +- .../unicode/props/PropertyParsingInfo.java | 50 ++++---- .../org/unicode/props/IndexPropertyRegex.txt | 116 ++++++++++-------- 3 files changed, 94 insertions(+), 74 deletions(-) diff --git a/unicodetools/data/ucd/dev/PropertyValueAliases.txt b/unicodetools/data/ucd/dev/PropertyValueAliases.txt index 66173e5e9..607305cd1 100644 --- a/unicodetools/data/ucd/dev/PropertyValueAliases.txt +++ b/unicodetools/data/ucd/dev/PropertyValueAliases.txt @@ -1570,7 +1570,7 @@ Term; Y ; Yes ; T # Titlecase_Mapping (tc) -# @missing: 0000..10FFFF; Titlecase_Mapping; +# @missing: 0000..10FFFF; Titlecase_Mapping; # Unicode_1_Name (na1) diff --git a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java index 29d11b74a..6a97b32b6 100644 --- a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java +++ b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java @@ -423,30 +423,35 @@ public String normalizeAndVerify(String string) { case Miscellaneous: if (property == UcdProperty.Script_Extensions) { string = normalizeEnum(string); - } else { + } + if (property.getDerivedStatus() != DerivedPropertyStatus.UCDNonProperty && + property.getDerivedStatus() != DerivedPropertyStatus.NonUCDNonProperty ) { string = checkRegex2(string); } break; case String: // check regex - string = checkRegex2(string); - if (string == null) { - // nothing - } else { - try { - if (string.contains("|")) { - StringBuilder result = new StringBuilder(); - for (String part : BAR.split(string)) { - result.append(Utility.fromHex(part)); + if (property.getDerivedStatus() != DerivedPropertyStatus.UCDNonProperty && + property.getDerivedStatus() != DerivedPropertyStatus.NonUCDNonProperty ) { + string = checkRegex2(string); + if (string == null) { + // nothing + } else { + try { + if (string.contains("|")) { + StringBuilder result = new StringBuilder(); + for (String part : BAR.split(string)) { + result.append(Utility.fromHex(part)); + } + string = result.toString(); + } else { + string = Utility.fromHex(string); } - string = result.toString(); - } else { - string = Utility.fromHex(string); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new UnicodePropertyException(property.toString()); } - } catch (RuntimeException e) { - throw e; - } catch (Exception e) { - throw new UnicodePropertyException(property.toString()); } } break; @@ -1997,7 +2002,11 @@ static void init() { } } - // DO THESE FIRST (overrides values in files!) + for (final String line : + FileUtilities.in(IndexUnicodeProperties.class, "IndexPropertyRegex.txt")) { + getRegexInfo(line); + } + parseMissingFromValueAliases( FileUtilities.in(IndexUnicodeProperties.class, "ExtraPropertyAliases.txt")); parseMissingFromValueAliases( @@ -2016,11 +2025,6 @@ static void init() { } parseMissingFromValueAliases(FileUtilities.in("", propValueAliases)); - for (final String line : - FileUtilities.in(IndexUnicodeProperties.class, "IndexPropertyRegex.txt")) { - getRegexInfo(line); - } - // for (String line : FileUtilities.in(IndexUnicodeProperties.class, // "Multivalued.txt")) { // UcdProperty prop = UcdProperty.forString(line); diff --git a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt index 8c616fe75..7779e1e3e 100644 --- a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt +++ b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt @@ -26,23 +26,24 @@ $digit = [0-9] $hexDigit = [A-F0-9] $alphaNum = [a-zA-Z0-9] -$dashName = $alphaNum+([-]$alphaNum)* $digits = $digit+ -$label = $alphaNum+ $positiveDecimal = $digits\.$digits -$decimal = -?$positiveDecimal +$label = $alphaNum+ $rational = -?$digits(/$digits)? -$optionalDecimal = -?$digits(\.$digits)? $name = $label(( -|- |[-_ ])$label)* $name2 = $label([-_ ]$label)* $annotatedName = $name2( \(.*\))? -$shortName = [A-Z]{0,3} $codePoint = (10|$hexDigit)?$hexDigit{4} $codePoints = $codePoint(\s$codePoint)* $codePoint0 = ($codePoints)? -# Main data +# Variables that aren't being used +#$dashName = $alphaNum+([-]$alphaNum)* +#$optionalDecimal = -?$digits(\.$digits)? +#$shortName = [A-Z]{0,3} +##$decimal = -?$positiveDecimal +# Main data Bidi_Mirroring_Glyph ; SINGLE_VALUED ; $codePoint Bidi_Paired_Bracket ; SINGLE_VALUED ; $codePoint Simple_Lowercase_Mapping ; SINGLE_VALUED ; $codePoint @@ -62,52 +63,52 @@ Titlecase_Mapping ; SINGLE_VALUED ; $codePoints Uppercase_Mapping ; SINGLE_VALUED ; $codePoints ISO_Comment ; SINGLE_VALUED ; $name -Name ; SINGLE_VALUED ; $name +Name ; SINGLE_VALUED ; CJK UNIFIED IDEOGRAPH-#|CJK COMPATIBILITY IDEOGRAPH-#|EGYPTIAN HIEROGLYPH-#|TANGUT IDEOGRAPH-#|KHITAN SMALL SCRIPT CHARACTER-#|NUSHU CHARACTER-#|SEAL CHARACTER-#|\$HANGUL_SYLLABLE\$|$name Named_Sequences ; SINGLE_VALUED ; $name Named_Sequences_Prov ; SINGLE_VALUED ; $name Name_Alias ; MULTI_VALUED ; $name Unicode_1_Name ; SINGLE_VALUED ; $annotatedName -Jamo_Short_Name ; SINGLE_VALUED ; $shortName +Jamo_Short_Name ; SINGLE_VALUED ; [A-Z]{0,3} Block ; SINGLE_VALUED ; $name2 Script ; SINGLE_VALUED ; $name2 -Numeric_Value ; SINGLE_VALUED ; $rational +Numeric_Value ; SINGLE_VALUED ; NaN|$rational Emoji_DCM ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_KDDI ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_SB ; SINGLE_VALUED ; [0-9A-F]{4} -CJK_Radical ; ORDERED ; [1-9][0-9]?|1[0-9][0-9]|2(0[0-9]|1[0-4])|(90|120|147|149|154|159|162|16[7-9]|178|18[1-4]|187|19[5-7]|199|201|205|21[0-3])' +CJK_Radical ; ORDERED ; [0-9]{1,3}'{0,3} # Regex patterns from UAX #38 kHanyuPinyin ; MULTI_VALUED ; (\d{5}\.\d{2}0,)*\d{5}\.\d{2}0:([a-z\x{300}-\x{302}\x{304}\x{308}\x{30C}]+,)*[a-z\x{300}-\x{302}\x{304}\x{308}\x{30C}]+ -kIICore ; SINGLE_VALUED ; 2\.1 +kIICore ; SINGLE_VALUED ; [ABC][GHJKMPT]{1,7} kIBMJapan ; SINGLE_VALUED ; F[ABC][0-9A-F]{2} -kIRG_GSource ; SINGLE_VALUED ; G(4K|BK|CH|CY|FZ|HC|HZ|((BK|CH|GH|HC|XC|ZH)-[0-9]{4}\.[0-9]{2})|HZ-[0-9]{5}\.[0-9]{2}|(KX-[01][0-9]{3}\.[0-9]{2})|((CYY|FZ|JZ|ZFY|ZJW)-[0-9]{5})|([0135789ES]-[0-9A-F]{4})|IDC-[0-9]{3}) -kIRG_HSource ; SINGLE_VALUED ; H-[0-9A-F]{4} -kIRG_JSource ; SINGLE_VALUED ; J((([0134AK]|3A|ARIB)-[0-9A-F]{4,5})|(H-(((IB|JT|[0-9]{2})[0-9A-F]{4}S?)))) -kIRG_KPSource ; SINGLE_VALUED ; KP[01]-[0-9A-F]{4} -kIRG_KSource ; SINGLE_VALUED ; K[0-57]-[0-9A-F]{4} -kIRG_MSource ; SINGLE_VALUED ; MAC-[0-9]{5} -kIRG_TSource ; SINGLE_VALUED ; T[1-7B-F]-[0-9A-F]{4} +kIRG_GSource ; SINGLE_VALUED ; G[013578EKS]-[0-9A-F]{4}|G(CH|CY|DZ|GH|RM|WZ|XC|XH|ZH)-\d{4}\.\d{2}|GKX-\d{4}\.\d{2,3}|G(HZ|HZR)-\d{5}\.\d{2}|G(CE|FC|IDC23|OCD|XHZ)-\d{3}|G(H|HF|LGYJ|PGLG|T|ZHSJ)-\d{4}|G(4K|CESI|CYY|DM|GT|JZ|KJ|XM|WY|ZFY|ZJW|ZYS)-\d{5}|G(FZ|IDC)-[0-9A-F]{4}|GCA-[A-Z]\d{4}|GGFZ-\d{6}|G(BK|HC|LK|Z)-\d{7}|G(CH|CY|HC|U)-[023][0-9A-F]{4}|GZA-[123467]\d{5} +kIRG_HSource ; SINGLE_VALUED ; H-[0-9A-F]{4}|H(B[012])-[0-9A-F]{4}|HD-[23]?[0-9A-F]{4}|HU-[023][0-9A-F]{4} +kIRG_JSource ; SINGLE_VALUED ; J[014]-[0-9A-F]{4}|J3A?-[0-9A-F]{4}|J13A?-[0-9A-F]{4}|J14-[0-9A-F]{4}|JA[34]?-[0-9A-F]{4}|JARIB-[0-9A-F]{4}|JH-(JT[ABC][0-9A-F]{3}S?|IB\d{4}|\d{6})|JK-\d{5}|JMJ-\d{6} +kIRG_KPSource ; SINGLE_VALUED ; KP([01]-[0-9A-F]{4}|U-[023][0-9A-F]{4}) +kIRG_KSource ; SINGLE_VALUED ; K[0-6]-[0-9A-F]{4}|KC-\d{5}|KU-[023][0-9A-F]{4} +kIRG_MSource ; SINGLE_VALUED ; MA-[0-9A-F]{4}|MB[12]-[0-9A-F]{4}|MC-\d{5}|MDH?-[23]?[0-9A-F]{4} +kIRG_TSource ; SINGLE_VALUED ; T([1-79A-F]|1[1-3])-[0-9A-F]{4}|TU-[023][0-9A-F]{4} kIRG_USource ; SINGLE_VALUED ; U(TC|CI)-?[0-9]{5} kCompatibilityVariant ; SINGLE_VALUED ; U\+2?[0-9A-F]{4} -kSimplifiedVariant ; MULTI_VALUED ; U\+2?[0-9A-F]{4} -kTraditionalVariant ; MULTI_VALUED ; U\+2?[0-9A-F]{4} -kSemanticVariant ; MULTI_VALUED ; U\+2?[0-9A-F]{4}(&\(\)\{\}\s\x{303}\x{30C}\x{323}\x{32E}\x{331}\x{A722}\x{A723}\x{A724}\x{A725}\x{A7BC}\x{A7BD}]+ +kEH_HG ; MULTI_VALUED ; ([A-IK-Z]|AA)\d{1,3}[A-Za-z]{0,2} +kEH_IFAO ; MULTI_VALUED ; \d{1,3},\d{1,2}[ab]? +kEH_JSesh ; MULTI_VALUED ; ([A-IK-Z]|Aa|NL|NU|Ff)\d{1,3}[A-Za-z]{0,5}|(US1|US22|US248|US685)([A-IK-Z]|Aa|NL|NU)\d{1,3}[A-Za-z]{0,5} +kEH_UniK ; SINGLE_VALUED ; ([A-IK-Z]|AA|NL|NU)\d{3}[A-Z]{0,2}|HJ ([A-IK-Z]|AA)\d{3}[A-Z]{0,2} + +# 17.0 +kEH_AltSeq ; SINGLE_VALUED ; [0-9A-F]{5}(\s[0-9A-F]{4,5})* +kTayNumeric ; SINGLE_VALUED ; NaN|[0-9]+ + +# 18.0 +kTGT_Numeric ; SINGLE_VALUED ; NaN|$digit+|$positiveDecimal +kJURC_Numeric ; SINGLE_VALUED ; [1-9]\d{0,4} +kJURC_NCReading ; SINGLE_VALUED ; [^\t"]+ +kJURC_Src ; SINGLE_VALUED ; NC:\d{3}\.\d{2}(,\d{3}\.\d{2})?|SJ-B\:\d{3}[A-Z]\.\d|JJ\:\d{3}|N5131\:X-\d{4} +kJURC_RSUnicode ; SINGLE_VALUED ; [1-9]\d{0,1}\.[1-9]\d{0,1} +kSEAL_THXSrc ; SINGLE_VALUED ; TH-[0-9]{5}|TH-(X|Y)[0-9]{3}|KD-[0-9A-F]{5} +kSEAL_CCZSrc ; SINGLE_VALUED ; C-[0-9]{5} +kSEAL_DYCSrc ; SINGLE_VALUED ; D-[0-9]{5} +kSEAL_QJZSrc ; SINGLE_VALUED ; K-[0-9]{5} +kSEAL_MCJK ; SINGLE_VALUED ; $codePoints +kSEAL_Rad ; MULTI_VALUED ; [0-9]{1,3}\.[A-F0-9]{4,5} normalization_correction_original ; SINGLE_VALUED ; [0-9A-F]{4,5} normalization_correction_corrected ; SINGLE_VALUED ; [0-9A-F]{4,5} @@ -217,17 +244,6 @@ Names_List_Cross_Ref ; MULTI_VALUED ; .* Do_Not_Emit_Dispreferred ; MULTI_VALUED ; .* Do_Not_Emit_Dispreferred_Type ; MULTI_VALUED ; .* -# Regex patterns from UAX #57 - -kEH_Cat ; SINGLE_VALUED ; ([A-IK-Z]|AA)-\d{2}-\d{3} -kEH_Desc ; SINGLE_VALUED ; [^\t"]+ -kEH_Func ; MULTI_VALUED ; [^\t"]+ -kEH_FVal ; MULTI_VALUED ; [bdf-hjkmnpr-twy\.,\/\-\+=;?>\&\(\)\{\}\s\x{303}\x{30C}\x{323}\x{32E}\x{331}\x{A723}\x{A725}\x{A7BD}]+ -kEH_HG ; MULTI_VALUED ; ([A-IK-Z]|AA)\d{1,3}[A-Za-z]{0,2} -kEH_IFAO ; MULTI_VALUED ; \d{1,3},\d{1,2}[ab]? -kEH_JSesh ; MULTI_VALUED ; ([A-IK-Z]|Aa|NL|NU|Ff)\d{1,3}[A-Za-z]{0,5}|(US1|US22|US248|US685)([A-IK-Z]|Aa|NL|NU)\d{1,3}[A-Za-z]{0,5} -kEH_UniK ; SINGLE_VALUED ; ([A-IK-Z]|AA|NL|NU)\d{3}[A-Z]{0,2}|HJ ([A-IK-Z]|AA)\d{3}[A-Z]{0,2} -kEH_AltSeq ; SINGLE_VALUED ; [0-9A-F]{5}(\s[0-9A-F]{5})* # ============================= # Catalog/Enum/Binary Properties From eb85cf11ab802964a3b84f55fb7dc0b17a5c4852 Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Mon, 26 Jan 2026 13:52:24 -0800 Subject: [PATCH 02/20] Some standardization work --- .../org/unicode/props/IndexPropertyRegex.txt | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt index 7779e1e3e..1027f8683 100644 --- a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt +++ b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt @@ -54,13 +54,13 @@ Equivalent_Unified_Ideograph; SINGLE_VALUED ; $codePoint NFKC_Casefold ; SINGLE_VALUED ; $codePoint0 NFKC_Simple_Casefold ; SINGLE_VALUED ; $codePoint0 -Case_Folding ; SINGLE_VALUED ; $codePoints -Decomposition_Mapping ; SINGLE_VALUED ; $codePoints -FC_NFKC_Closure ; SINGLE_VALUED ; $codePoints -Lowercase_Mapping ; SINGLE_VALUED ; $codePoints -Simple_Case_Folding ; SINGLE_VALUED ; $codePoints -Titlecase_Mapping ; SINGLE_VALUED ; $codePoints -Uppercase_Mapping ; SINGLE_VALUED ; $codePoints +Case_Folding ; MULTI_VALUED ; $codePoint +Decomposition_Mapping ; MULTI_VALUED ; $codePoint +FC_NFKC_Closure ; MULTI_VALUED ; $codePoint +Lowercase_Mapping ; MULTI_VALUED ; $codePoint +Simple_Case_Folding ; MULTI_VALUED ; $codePoint +Titlecase_Mapping ; MULTI_VALUED ; $codePoint +Uppercase_Mapping ; MULTI_VALUED ; $codePoint ISO_Comment ; SINGLE_VALUED ; $name Name ; SINGLE_VALUED ; CJK UNIFIED IDEOGRAPH-#|CJK COMPATIBILITY IDEOGRAPH-#|EGYPTIAN HIEROGLYPH-#|TANGUT IDEOGRAPH-#|KHITAN SMALL SCRIPT CHARACTER-#|NUSHU CHARACTER-#|SEAL CHARACTER-#|\$HANGUL_SYLLABLE\$|$name @@ -230,16 +230,16 @@ kSEAL_THXSrc ; SINGLE_VALUED ; TH-[0-9]{5}|TH-(X|Y kSEAL_CCZSrc ; SINGLE_VALUED ; C-[0-9]{5} kSEAL_DYCSrc ; SINGLE_VALUED ; D-[0-9]{5} kSEAL_QJZSrc ; SINGLE_VALUED ; K-[0-9]{5} -kSEAL_MCJK ; SINGLE_VALUED ; $codePoints +kSEAL_MCJK ; MULTI_VALUED ; $codePoint kSEAL_Rad ; MULTI_VALUED ; [0-9]{1,3}\.[A-F0-9]{4,5} normalization_correction_original ; SINGLE_VALUED ; [0-9A-F]{4,5} normalization_correction_corrected ; SINGLE_VALUED ; [0-9A-F]{4,5} normalization_correction_version ; SINGLE_VALUED ; [0-9]\.[0-9]\.[0-9] -Names_List_Alias ; MULTI_VALUED ; .* -Names_List_Comment ; MULTI_VALUED ; .* -Names_List_Cross_Ref ; MULTI_VALUED ; .* +Names_List_Alias ; SINGLE_VALUED ; .* +Names_List_Comment ; SINGLE_VALUED ; .* +Names_List_Cross_Ref ; SINGLE_VALUED ; .* Do_Not_Emit_Dispreferred ; MULTI_VALUED ; .* Do_Not_Emit_Dispreferred_Type ; MULTI_VALUED ; .* @@ -254,16 +254,16 @@ Script_Extensions ; MULTI_VALUED ; Standardized_Variant ; MULTI_VALUED ; .* Idn_Status ; SINGLE_VALUED ; -Idn_Mapping ; SINGLE_VALUED ; $codePoints +Idn_Mapping ; MULTI_VALUED ; $codePoint Idn_2008 ; SINGLE_VALUED ; Identifier_Status ; SINGLE_VALUED ; Identifier_Type ; MULTI_VALUED ; -Confusable_SL ; SINGLE_VALUED ; $codePoints -Confusable_SA ; SINGLE_VALUED ; $codePoints -Confusable_ML ; SINGLE_VALUED ; $codePoints -Confusable_MA ; SINGLE_VALUED ; $codePoints +Confusable_SL ; MULTI_VALUED ; $codePoint +Confusable_SA ; MULTI_VALUED ; $codePoint +Confusable_ML ; MULTI_VALUED ; $codePoint +Confusable_MA ; MULTI_VALUED ; $codePoint #Emoji ; SINGLE_VALUED ; #Emoji_Presentation ; SINGLE_VALUED ; From 65818cba519216ef10784284e2eb1e0c06b0e354 Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Wed, 4 Feb 2026 12:49:39 -0800 Subject: [PATCH 03/20] Reverted previous change --- unicodetools/data/ucd/dev/PropertyValueAliases.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unicodetools/data/ucd/dev/PropertyValueAliases.txt b/unicodetools/data/ucd/dev/PropertyValueAliases.txt index e4cc31e76..6f5780a66 100644 --- a/unicodetools/data/ucd/dev/PropertyValueAliases.txt +++ b/unicodetools/data/ucd/dev/PropertyValueAliases.txt @@ -1571,7 +1571,7 @@ Term; Y ; Yes ; T # Titlecase_Mapping (tc) -# @missing: 0000..10FFFF; Titlecase_Mapping; +# @missing: 0000..10FFFF; Titlecase_Mapping; # Unicode_1_Name (na1) From e0bac873ab0b24630169f6bbf24d6de2fabe1dec Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Wed, 4 Feb 2026 15:35:21 -0800 Subject: [PATCH 04/20] More changes after discussion with Robin --- .../unicode/props/PropertyParsingInfo.java | 5 + .../org/unicode/props/IndexPropertyRegex.txt | 399 ++++++++---------- 2 files changed, 191 insertions(+), 213 deletions(-) diff --git a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java index 25b184de4..fd8d59617 100644 --- a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java +++ b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java @@ -1949,6 +1949,11 @@ public static void setPropDefault( + propInfo.getDefaultValue(version)); } } else if (propInfo.getDefaultValue(version).equals(value)) { + } else if (propInfo.property == UcdProperty.Lowercase_Mapping || + propInfo.property == UcdProperty.Titlecase_Mapping || + propInfo.property == UcdProperty.Uppercase_Mapping) { + // These properties are intentionally set to in PropertyValueAliases.txt + // But we should keep , , and } else { final String comment = "\t ** ERROR Will not change default for " diff --git a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt index 1027f8683..03ede73cc 100644 --- a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt +++ b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt @@ -19,258 +19,231 @@ # Each regular expression validity pattern has all variables replaced before use. # ============================= -# Regex patterns from UAX #44 (fixed, plus missing) - -# Variables +# Regex patterns from UAX #44 +## Variables $digit = [0-9] $hexDigit = [A-F0-9] $alphaNum = [a-zA-Z0-9] $digits = $digit+ -$positiveDecimal = $digits\.$digits $label = $alphaNum+ +$positiveDecimal = $digits\.$digits +#$decimal = -?$positiveDecimal $rational = -?$digits(/$digits)? +#$optionalDecimal = -?$digits(\.$digits)? $name = $label(( -|- |[-_ ])$label)* $name2 = $label([-_ ]$label)* $annotatedName = $name2( \(.*\))? +$shortName = [A-Z]{0,3} $codePoint = (10|$hexDigit)?$hexDigit{4} $codePoints = $codePoint(\s$codePoint)* $codePoint0 = ($codePoints)? -# Variables that aren't being used -#$dashName = $alphaNum+([-]$alphaNum)* -#$optionalDecimal = -?$digits(\.$digits)? -#$shortName = [A-Z]{0,3} -##$decimal = -?$positiveDecimal - -# Main data +## Main data +### Non-Unihan Normative, Informative, Contributory, and (Provisional) UCD properties Bidi_Mirroring_Glyph ; SINGLE_VALUED ; $codePoint Bidi_Paired_Bracket ; SINGLE_VALUED ; $codePoint -Simple_Lowercase_Mapping ; SINGLE_VALUED ; $codePoint -Simple_Titlecase_Mapping ; SINGLE_VALUED ; $codePoint -Simple_Uppercase_Mapping ; SINGLE_VALUED ; $codePoint +Block ; SINGLE_VALUED ; $name2 +Case_Folding ; SINGLE_VALUED ; $codePoints +Decomposition_Mapping ; SINGLE_VALUED ; $codePoints Equivalent_Unified_Ideograph; SINGLE_VALUED ; $codePoint - -NFKC_Casefold ; SINGLE_VALUED ; $codePoint0 -NFKC_Simple_Casefold ; SINGLE_VALUED ; $codePoint0 - -Case_Folding ; MULTI_VALUED ; $codePoint -Decomposition_Mapping ; MULTI_VALUED ; $codePoint -FC_NFKC_Closure ; MULTI_VALUED ; $codePoint -Lowercase_Mapping ; MULTI_VALUED ; $codePoint -Simple_Case_Folding ; MULTI_VALUED ; $codePoint -Titlecase_Mapping ; MULTI_VALUED ; $codePoint -Uppercase_Mapping ; MULTI_VALUED ; $codePoint - +FC_NFKC_Closure ; SINGLE_VALUED ; $codePoints ISO_Comment ; SINGLE_VALUED ; $name -Name ; SINGLE_VALUED ; CJK UNIFIED IDEOGRAPH-#|CJK COMPATIBILITY IDEOGRAPH-#|EGYPTIAN HIEROGLYPH-#|TANGUT IDEOGRAPH-#|KHITAN SMALL SCRIPT CHARACTER-#|NUSHU CHARACTER-#|SEAL CHARACTER-#|\$HANGUL_SYLLABLE\$|$name -Named_Sequences ; SINGLE_VALUED ; $name -Named_Sequences_Prov ; SINGLE_VALUED ; $name +Jamo_Short_Name ; SINGLE_VALUED ; $shortName +Lowercase_Mapping ; SINGLE_VALUED ; $codePoints +Name ; SINGLE_VALUED ; CJK UNIFIED IDEOGRAPH-#|CJK COMPATIBILITY IDEOGRAPH-#|EGYPTIAN HIEROGLYPH-#|TANGUT IDEOGRAPH-#|KHITAN SMALL SCRIPT CHARACTER-#|NUSHU CHARACTER-#|SEAL CHARACTER-#|JURCHEN CHARACTER-#|\$HANGUL_SYLLABLE\$|$name Name_Alias ; MULTI_VALUED ; $name -Unicode_1_Name ; SINGLE_VALUED ; $annotatedName -Jamo_Short_Name ; SINGLE_VALUED ; [A-Z]{0,3} - -Block ; SINGLE_VALUED ; $name2 +NFKC_Casefold ; SINGLE_VALUED ; $codePoint0 +NFKC_Simple_Casefold ; SINGLE_VALUED ; $codePoint0 +Numeric_Value ; SINGLE_VALUED ; NaN|$rational Script ; SINGLE_VALUED ; $name2 +Script_Extensions ; MULTI_VALUED ; +Simple_Case_Folding ; SINGLE_VALUED ; $codePoints +Simple_Lowercase_Mapping ; SINGLE_VALUED ; $codePoint +Simple_Titlecase_Mapping ; SINGLE_VALUED ; $codePoint +Simple_Uppercase_Mapping ; SINGLE_VALUED ; $codePoint +Titlecase_Mapping ; SINGLE_VALUED ; $codePoints +Unicode_1_Name ; SINGLE_VALUED ; $annotatedName +Uppercase_Mapping ; SINGLE_VALUED ; $codePoints -Numeric_Value ; SINGLE_VALUED ; NaN|$rational +### Non-UCD properties +Identifier_Status ; SINGLE_VALUED ; +Identifier_Type ; MULTI_VALUED ; +Math_Class ; ORDERED ; +### Other UCD data +CJK_Radical ; ORDERED ; [0-9]{1,3}'{0,3} +Do_Not_Emit_Dispreferred ; MULTI_VALUED ; .* +Do_Not_Emit_Dispreferred_Type ; MULTI_VALUED ; Emoji_DCM ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_KDDI ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_SB ; SINGLE_VALUED ; [0-9A-F]{4} -CJK_Radical ; ORDERED ; [0-9]{1,3}'{0,3} - -# Regex patterns from UAX #38 +Named_Sequences ; SINGLE_VALUED ; $name +Named_Sequences_Prov ; SINGLE_VALUED ; $name +Names_List_Alias ; SINGLE_VALUED ; .* +Names_List_Comment ; SINGLE_VALUED ; .* +Names_List_Cross_Ref ; SINGLE_VALUED ; .* +normalization_correction_corrected ; SINGLE_VALUED ; [0-9A-F]{4,5} +normalization_correction_original ; SINGLE_VALUED ; [0-9A-F]{4,5} +normalization_correction_version ; SINGLE_VALUED ; [0-9]\.[0-9]\.[0-9] +Standardized_Variant ; MULTI_VALUED ; .* +### Other information +Confusable_MA ; SINGLE_VALUED ; $codePoints +Confusable_ML ; SINGLE_VALUED ; $codePoints +Confusable_SA ; SINGLE_VALUED ; $codePoints +Confusable_SL ; SINGLE_VALUED ; $codePoints +Idn_2008 ; SINGLE_VALUED ; +Idn_Mapping ; SINGLE_VALUED ; $codePoints +Idn_Status ; SINGLE_VALUED ; +Math_Class_Ex ; ORDERED ; +Math_Entity_Name ; MULTI_VALUED ; .* +Math_Entity_Set ; MULTI_VALUED ; .* + +# Regex patterns from UAX 38 (Unihan) +kAccountingNumeric ; SINGLE_VALUED ; NaN|\d+ +kAlternateTotalStrokes ; MULTI_VALUED ; (\d+:[BGHJKMPSTUV]+)|- +kBigFive ; SINGLE_VALUED ; [0-9A-F]{4}'? +kCangjie ; SINGLE_VALUED ; [A-Z]+ +kCantonese ; MULTI_VALUED ; [a-z]{1,6}[1-6] +kCCCII ; EXTENSIBLE ; [0-9A-F]{6} +kCheungBauer ; EXTENSIBLE ; \d{3}\/\d{2};[A-Z]*;[a-z1-6\[\]\/,]+ +kCheungBauerIndex ; MULTI_VALUED ; \d{3}\.[01]\d +kCihaiT ; MULTI_VALUED ; [1-9]\d{0,3}\.\d{3} +kCNS1986 ; SINGLE_VALUED ; [12E]-[0-9A-F]{4} +kCNS1992 ; SINGLE_VALUED ; [1-9]-[0-9A-F]{4} +kCompatibilityVariant ; SINGLE_VALUED ; U\+[23]?[0-9A-F]{4} +kCowles ; MULTI_VALUED ; \d{1,4}(\.\d{1,2})? +kDaeJaweon ; SINGLE_VALUED ; \d{4}\.\d{2}[01] +kDefinition ; SINGLE_VALUED ; [^\t"]+ +kEACC ; SINGLE_VALUED ; [0-9A-F]{6} +kFanqie ; MULTI_VALUED ; [\x{3400}-\x{4DBF}\x{4E00}-\x{9FFF}\x{20000}-\x{2A6DF}]{2} +kFenn ; MULTI_VALUED ; \d+a?[A-KP*] +kFennIndex ; MULTI_VALUED ; \d{1,3}\.[01]\d +kFourCornerCode ; MULTI_VALUED ; \d{4}(\.\d)? +kFrequency ; SINGLE_VALUED ; [1-5] +kGB0 ; SINGLE_VALUED ; \d{4} +kGB1 ; SINGLE_VALUED ; \d{4} +kGB3 ; SINGLE_VALUED ; \d{4} +kGB5 ; MULTI_VALUED ; \d{4} +kGB7 ; SINGLE_VALUED ; \d{4} +kGB8 ; SINGLE_VALUED ; \d{4} +kGradeLevel ; SINGLE_VALUED ; [1-6] +kGSR ; MULTI_VALUED ; \d{4}[a-vx-z]\'? +kHangul ; MULTI_VALUED ; [\x{1100}-\x{1112}][\x{1161}-\x{1175}][\x{11A8}-\x{11C2}]?:[01ENX]{1,3} +kHanYu ; MULTI_VALUED ; [1-8]\d{4}\.[0-3]\d[0-3] +kHanyuPinlu ; MULTI_VALUED ; [a-z\x{300}-\x{302}\x{304}\x{308}\x{30C}]+\(\d+\) kHanyuPinyin ; MULTI_VALUED ; (\d{5}\.\d{2}0,)*\d{5}\.\d{2}0:([a-z\x{300}-\x{302}\x{304}\x{308}\x{30C}]+,)*[a-z\x{300}-\x{302}\x{304}\x{308}\x{30C}]+ -kIICore ; SINGLE_VALUED ; [ABC][GHJKMPT]{1,7} -kIBMJapan ; SINGLE_VALUED ; F[ABC][0-9A-F]{2} -kIRG_GSource ; SINGLE_VALUED ; G[013578EKS]-[0-9A-F]{4}|G(CH|CY|DZ|GH|RM|WZ|XC|XH|ZH)-\d{4}\.\d{2}|GKX-\d{4}\.\d{2,3}|G(HZ|HZR)-\d{5}\.\d{2}|G(CE|FC|IDC23|OCD|XHZ)-\d{3}|G(H|HF|LGYJ|PGLG|T|ZHSJ)-\d{4}|G(4K|CESI|CYY|DM|GT|JZ|KJ|XM|WY|ZFY|ZJW|ZYS)-\d{5}|G(FZ|IDC)-[0-9A-F]{4}|GCA-[A-Z]\d{4}|GGFZ-\d{6}|G(BK|HC|LK|Z)-\d{7}|G(CH|CY|HC|U)-[023][0-9A-F]{4}|GZA-[123467]\d{5} +kHDZRadBreak ; SINGLE_VALUED ; [\x{2F00}-\x{2FD5}]\[U\+2F[0-9A-D][0-9A-F]\]:[1-8]\d{4}\.[0-3]\d0 +kHKGlyph ; MULTI_VALUED ; \d{4} +kHKSCS ; SINGLE_VALUED ; [0-9A-F]{4} +kIBMJapan ; MULTI_VALUED ; F[ABC][0-9A-F]{2} +kIICore ; MULTI_VALUED ; [ABC][GHJKMPT]{1,7} +kIRGDaeJaweon ; MULTI_VALUED ; \d{4}\.\d{2}[01] +kIRGDaiKanwaZiten ; SINGLE_VALUED ; \d{5}\'? +kIRGHanyuDaZidian ; MULTI_VALUED ; [1-8]\d{4}\.[0-3]\d[01] +kIRGKangXi ; MULTI_VALUED ; [01]\d{3}\.[0-7]\d[01] +kIRG_GSource ; SINGLE_VALUED ; G[013578EKS]-[0-9A-F]{4}|G(CH|CY|DZ|GH|RM|WZ|XC|XH|ZH)-\d{4}\.\d{2}|GKX-\d{4}\.\d{2,3}|G(HZ|HZR)-\d{5}\.\d{2}|G(CE|FC|IDC23|OCD|XHZ)-\d{3}|G(H|HF|LGYJ|PGLG|T|ZHSJ)-\d{4}|G(4K|CESI|CYY|DM|GT|JZ|KJ|XM|WY|ZFY|ZJW|ZYS)-\d{5}|G(FZ|IDC)-[0-9A-F]{4}|GCA-[A-Z]\d{4}|GGFZ-\d{6}|G(BK|HC|LK|Z)-\d{7}|GU-[023][0-9A-F]{4}|GZA-[123467]\d{5} kIRG_HSource ; SINGLE_VALUED ; H-[0-9A-F]{4}|H(B[012])-[0-9A-F]{4}|HD-[23]?[0-9A-F]{4}|HU-[023][0-9A-F]{4} kIRG_JSource ; SINGLE_VALUED ; J[014]-[0-9A-F]{4}|J3A?-[0-9A-F]{4}|J13A?-[0-9A-F]{4}|J14-[0-9A-F]{4}|JA[34]?-[0-9A-F]{4}|JARIB-[0-9A-F]{4}|JH-(JT[ABC][0-9A-F]{3}S?|IB\d{4}|\d{6})|JK-\d{5}|JMJ-\d{6} kIRG_KPSource ; SINGLE_VALUED ; KP([01]-[0-9A-F]{4}|U-[023][0-9A-F]{4}) kIRG_KSource ; SINGLE_VALUED ; K[0-6]-[0-9A-F]{4}|KC-\d{5}|KU-[023][0-9A-F]{4} kIRG_MSource ; SINGLE_VALUED ; MA-[0-9A-F]{4}|MB[12]-[0-9A-F]{4}|MC-\d{5}|MDH?-[23]?[0-9A-F]{4} +kIRG_SSource ; SINGLE_VALUED ; SATM?-\d{5} kIRG_TSource ; SINGLE_VALUED ; T([1-79A-F]|1[1-3])-[0-9A-F]{4}|TU-[023][0-9A-F]{4} -kIRG_USource ; SINGLE_VALUED ; U(TC|CI)-?[0-9]{5} -kCompatibilityVariant ; SINGLE_VALUED ; U\+2?[0-9A-F]{4} -kSimplifiedVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4} -kTraditionalVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4} -kSemanticVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4}(<[ks][A-Za-z0-9_]+(:[TBZFJ]+)?(,[ks][A-Za-z0-9_]+(:[TBZFJ]+)?)*)? -kSpecializedSemanticVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4}(<[ks][A-Za-z0-9_]+(:[TBZFJ]+)?(,[ks][A-Za-z0-9_]+(:[TBZFJ]+)?)*)? -kZVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4}(<[ks][A-Za-z0-9_]+(:[TBZ]+)?(,[ks][A-Za-z0-9_]+(:[TBZ]+)?)*)? +kIRG_UKSource ; SINGLE_VALUED ; UK-\d{5} +kIRG_USource ; SINGLE_VALUED ; UTC-\d{5} kIRG_VSource ; SINGLE_VALUED ; V[0-4]-[0-9A-F]{4}|VN-[023F][0-9A-F]{4} -kBigFive ; SINGLE_VALUED ; [0-9A-F]{4}'? -kHKSCS ; SINGLE_VALUED ; [0-9A-F]{4} -kKPS0 ; SINGLE_VALUED ; [0-9A-F]{4} -kKPS1 ; SINGLE_VALUED ; [0-9A-F]{4} -kCCCII ; EXTENSIBLE ; [0-9A-F]{6} -kEACC ; SINGLE_VALUED ; [0-9A-F]{6} -kAccountingNumeric ; SINGLE_VALUED ; NaN|[0-9]+ -kOtherNumeric ; SINGLE_VALUED ; NaN|[0-9]+ -kPrimaryNumeric ; ORDERED ; NaN|[0-9]+ -kFenn ; MULTI_VALUED ; [0-9]+a?[A-KP*] -kCowles ; MULTI_VALUED ; [0-9]{1,4}(\.[0-9]{1,2})? -kXerox ; SINGLE_VALUED ; [0-9]{3}:[0-9]{3} -kSBGY ; MULTI_VALUED ; [0-9]{3}\.[0-7][0-9] -kCheungBauerIndex ; MULTI_VALUED ; [0-9]{3}\.[01][0-9] -kCheungBauer ; EXTENSIBLE ; [0-9]{3}\/[0-9]{2};[A-Z]*;[a-z1-6\[\]\/,]+ -kGB0 ; SINGLE_VALUED ; [0-9]{4} -kGB1 ; SINGLE_VALUED ; [0-9]{4} -kGB3 ; SINGLE_VALUED ; [0-9]{4} -kGB5 ; SINGLE_VALUED ; [0-9]{4} -kGB7 ; SINGLE_VALUED ; [0-9]{4} -kGB8 ; SINGLE_VALUED ; [0-9]{4} -kHKGlyph ; MULTI_VALUED ; [0-9]{4} -kJis0 ; SINGLE_VALUED ; [0-9]{4} -kJis1 ; SINGLE_VALUED ; [0-9]{4} -kKSC0 ; SINGLE_VALUED ; [0-9]{4} -kKSC1 ; SINGLE_VALUED ; [0-9]{4} -kMainlandTelegraph ; SINGLE_VALUED ; [0-9]{4} -kNelson ; MULTI_VALUED ; [0-9]{4} -kPseudoGB1 ; SINGLE_VALUED ; [0-9]{4} -kTaiwanTelegraph ; MULTI_VALUED ; [0-9]{4} -kFourCornerCode ; MULTI_VALUED ; [0-9]{4}(\.[0-9])? -kGSR ; MULTI_VALUED ; [0-9]{4}[a-vx-z]\'? -kDaeJaweon ; SINGLE_VALUED ; [0-9]{4}\.[0-9]{2}[01] -kIRGDaeJaweon ; SINGLE_VALUED ; [0-9]{4}\.[0-9]{2}[01] -kKangXi ; MULTI_VALUED ; \d{4}\.\d{2}[01] -kXHC1983 ; MULTI_VALUED ; [0-9]{4}\.[0-9]{3}\*?(,[0-9]{4}\.[0-9]{3}\*?)*:[a-z\x{300}\x{301}\x{304}\x{308}\x{30C}]+ -kIRGDaiKanwaZiten ; SINGLE_VALUED ; [0-9]{5}\'? -kMorohashi ; MULTI_VALUED ; (\d{5}'{0,2}|H\d{3})(:(FE0[01]|E010[0-9A-F]))? -kIRGKangXi ; SINGLE_VALUED ; [01][0-9]{3}\.[0-7][0-9][01] -kFrequency ; SINGLE_VALUED ; [1-5] -kGradeLevel ; SINGLE_VALUED ; [1-6] -kHanYu ; MULTI_VALUED ; [1-8][0-9]{4}\.[0-3][0-9][0-3] -kIRGHanyuDaZidian ; SINGLE_VALUED ; [1-8][0-9]{4}\.[0-3][0-9][01] -kCNS1992 ; SINGLE_VALUED ; [1-9]-[0-9A-F]{4} -kTotalStrokes ; ORDERED ; [1-9][0-9]{0,2} -kRSUnicode ; ORDERED ; [1-9]\d{0,2}'{0,3}\.-?\d{1,2} -kRSJapanese ; EXTENSIBLE ; [1-9][0-9]{0,2}\.[0-9]{1,2} -kRSKanWa ; EXTENSIBLE ; [1-9][0-9]{0,2}\.[0-9]{1,2} -kRSKangXi ; EXTENSIBLE ; [1-9][0-9]{0,2}\.[0-9]{1,2} -kRSKorean ; EXTENSIBLE ; [1-9][0-9]{0,2}\.[0-9]{1,2} -kFennIndex ; MULTI_VALUED ; \d{1,3}\.[01]\d -kLau ; MULTI_VALUED ; [1-9][0-9]{0,3} -kMatthews ; SINGLE_VALUED ; [1-9][0-9]{0,3}(a|\.5)? -kKarlgren ; SINGLE_VALUED ; [1-9][0-9]{0,3}[A*]? -kPhonetic ; MULTI_VALUED ; [1-9][0-9]{0,3}[A-D]?\*? -kMeyerWempe ; MULTI_VALUED ; [1-9][0-9]{0,3}[a-t*]? -kCihaiT ; MULTI_VALUED ; [1-9][0-9]{0,3}\.[0-9]{3} -kCNS1986 ; SINGLE_VALUED ; [12E]-[0-9A-F]{4} -kJIS0213 ; SINGLE_VALUED ; [12],[0-9]{2},[0-9]{1,2} -kCangjie ; SINGLE_VALUED ; [A-Z]+ +kJapanese ; MULTI_VALUED ; [\x{3041}-\x{3096}\x{3099}\x{309A}\x{30A1}-\x{30FA}\x{30FC}]+ kJapaneseKun ; MULTI_VALUED ; [A-Z]+ kJapaneseOn ; MULTI_VALUED ; [A-Z]+ +kJinmeiyoKanji ; MULTI_VALUED ; (20\d{2})(:U\+[23]?[0-9A-F]{4})? +kJis0 ; MULTI_VALUED ; \d{4} +kJIS0213 ; MULTI_VALUED ; [12],\d{2},\d{1,2} +kJis1 ; MULTI_VALUED ; \d{4} +kJoyoKanji ; MULTI_VALUED ; (20\d{2})|(U\+[23]?[0-9A-F]{4}) +kKangXi ; MULTI_VALUED ; \d{4}\.\d{2}[01] +kKarlgren ; MULTI_VALUED ; [1-9]\d{0,3}[A*]? kKorean ; MULTI_VALUED ; [A-Z]+ -kVietnamese ; MULTI_VALUED ; [A-Za-z\x{110}\x{111}\x{300}-\x{303}\x{306}\x{309}\x{31B}\x{323}]+ -kRSAdobe_Japan1_6 ; MULTI_VALUED ; [CV]\+[0-9]{1,5}\+[1-9][0-9]{0,2}\.[1-9][0-9]?\.[0-9]{1,2} -kHangul ; MULTI_VALUED ; [\x{1100}-\x{1112}][\x{1161}-\x{1175}][\x{11A8}-\x{11C2}]?:[01ENX]{1,3} -kHDZRadBreak ; SINGLE_VALUED ; [\x{2F00}-\x{2FD5}]\[U\+2F[0-9A-D][0-9A-F]\]:[1-8][0-9]{4}\.[0-3][0-9]0 -kDefinition ; SINGLE_VALUED ; [^\t"]+ +kKoreanEducationHanja ; MULTI_VALUED ; 20\d{2} +kKoreanName ; MULTI_VALUED ; 20\d{2} +kKPS0 ; SINGLE_VALUED ; [0-9A-F]{4} +kKPS1 ; SINGLE_VALUED ; [0-9A-F]{4} +kKSC0 ; SINGLE_VALUED ; \d{4} +kKSC1 ; SINGLE_VALUED ; \d{4} +kLau ; MULTI_VALUED ; [1-9]\d{0,3} +kMainlandTelegraph ; MULTI_VALUED ; \d{4} kMandarin ; ORDERED ; [a-z\x{300}-\x{302}\x{304}\x{308}\x{30C}]+ -kHanyuPinlu ; MULTI_VALUED ; [a-z\x{300}-\x{302}\x{304}\x{308}\x{30C}]+\(\d+\) -kCantonese ; MULTI_VALUED ; [a-z]{1,6}[1-6] +kMatthews ; MULTI_VALUED ; [1-9]\d{0,3}(a|\.5)? +kMeyerWempe ; MULTI_VALUED ; [1-9]\d{0,3}[a-t*]? +kMojiJoho ; MULTI_VALUED ; MJ\d{6}(:(FE0[01]|E01[01][0-9A-F]))? +kMorohashi ; MULTI_VALUED ; (\d{5}\'{0,2}|H\d{3})(:(FE0[01]|E010[0-9A-F]))? +kNelson ; MULTI_VALUED ; \d{4} +kOtherNumeric ; MULTI_VALUED ; NaN|\d+ +kPhonetic ; MULTI_VALUED ; [1-9]\d{0,3}[A-D]?\*? +kPrimaryNumeric ; ORDERED ; NaN|\d+ +kPseudoGB1 ; SINGLE_VALUED ; \d{4} +kRSAdobe_Japan1_6 ; MULTI_VALUED ; [CV]\+\d{1,5}\+[1-9]\d{0,2}\.[1-9]\d?\.\d{1,2} +kRSJapanese ; EXTENSIBLE ; [1-9]\d{0,2}\.\d{1,2} +kRSKangXi ; EXTENSIBLE ; [1-9]\d{0,2}\.\d{1,2} +kRSKanWa ; EXTENSIBLE ; [1-9]\d{0,2}\.\d{1,2} +kRSKorean ; EXTENSIBLE ; [1-9]\d{0,2}\.\d{1,2} +kRSTUnicode ; SINGLE_VALUED ; \d+\.\d+ +kRSUnicode ; ORDERED ; [1-9]\d{0,2}\'{0,3}\.-?\d{1,2} +kSBGY ; MULTI_VALUED ; \d{3}\.[0-7]\d +kSemanticVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4}(<[ks][A-Za-z0-9_]+(:[TBZFJ]+)?(,[ks][A-Za-z0-9_]+(:[TBZFJ]+)?)*)? +kSimplifiedVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4} +kSMSZD2003Index ; MULTI_VALUED ; \d{1,3}\.\d{2} +kSMSZD2003Readings ; MULTI_VALUED ; [a-z\x{300}\x{301}\x{302}\x{304}\x{308}\x{30C}]+(,[a-z\x{300}\x{301}\x{302}\x{304}\x{308}\x{30C}]+)*\x{7CB5}[a-z]+[1-6]([a-z]+[1-6])?(,[a-z]+[1-6]([a-z]+[1-6])?)* +kSpecializedSemanticVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4}(<[ks][A-Za-z0-9_]+(:[TBZFJ]+)?(,[ks][A-Za-z0-9_]+(:[TBZFJ]+)?)*)? +kSpoofingVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4} +kStrange ; MULTI_VALUED ; [ACU]|B:U\+31[0-2AB][0-9A-F]|[MORY](:U\+[23]?[0-9A-F]{4})?|H(:U\+31[3-8][0-9A-F])+|I(:U\+[23]?[0-9A-F]{4})*|K(:U\+30[A-F][0-9A-F])+|S:[4-9]\d +kTaiwanTelegraph ; MULTI_VALUED ; \d{4} kTang ; MULTI_VALUED ; \*?[A-Za-z()\x{E6}\x{251}\x{259}\x{25B}\x{300}\x{30C}]+ +kTayNumeric ; MULTI_VALUED ; NaN|\d+ +kTGH ; MULTI_VALUED ; 20\d{2}:[1-9]\d{0,3} +kTGHZ2013 ; MULTI_VALUED ; \d{3}\.\d{3}(,\d{3}\.\d{3})*:[a-z\x{300}-\x{302}\x{304}\x{308}\x{30C}]+ +kTotalStrokes ; ORDERED ; [1-9]\d{0,2} +kTraditionalVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4} +kUnihanCore2020 ; SINGLE_VALUED ; [GHJKMPT]{1,7} +kVietnamese ; MULTI_VALUED ; [A-Za-z\x{110}\x{111}\x{300}-\x{303}\x{306}\x{309}\x{31B}\x{323}]+ +kVietnameseNumeric ; MULTI_VALUED ; NaN|\d+ +kXerox ; MULTI_VALUED ; \d{3}:\d{3} +kXHC1983 ; MULTI_VALUED ; \d{4}\.\d{3}\*?(,\d{4}\.\d{3}\*?)*:[a-z\x{300}\x{301}\x{304}\x{308}\x{30C}]+ +kZhuang ; MULTI_VALUED ; [a-z]+\*? +kZhuangNumeric ; MULTI_VALUED ; NaN|\d+ +kZVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4}(<[ks][A-Za-z0-9_]+(:[TBZ]+)?(,[ks][A-Za-z0-9_]+(:[TBZ]+)?)*)? -kJinmeiyoKanji ; MULTI_VALUED ; (20[0-9]{2})(:U\+2?[0-9A-F]{4})? -kJoyoKanji ; MULTI_VALUED ; (20[0-9]{2})|(U\+2?[0-9A-F]{4}) -kKoreanEducationHanja ; MULTI_VALUED ; 20[0-9]{2} -kKoreanName ; MULTI_VALUED ; (20[0-9]{2})(:U\+2?[0-9A-F]{4})* -kTGH ; MULTI_VALUED ; 20[0-9]{2}:[1-9][0-9]{0,3} - -kIRG_UKSource ; SINGLE_VALUED ; UK-\d{5} -kIRG_SSource ; SINGLE_VALUED ; SATM?-\d{5} - -# Unihan properties from 13.0 and later. No regexes for now. -# TODO(egg): We should automate the updating of the regexes from UAX #38. -kSpoofingVariant ; MULTI_VALUED ; .* -kTGHZ2013 ; MULTI_VALUED ; .* -kUnihanCore2020 ; SINGLE_VALUED ; .* -# 14.0 -kStrange ; MULTI_VALUED ; .* -# 15.0 -kAlternateTotalStrokes ; MULTI_VALUED ; .* -# 15.1 -kJapanese ; MULTI_VALUED ; .* -kMojiJoho ; MULTI_VALUED ; .* -kSMSZD2003Index ; MULTI_VALUED ; .* -kSMSZD2003Readings ; MULTI_VALUED ; .* -kVietnameseNumeric ; MULTI_VALUED ; .* -kZhuangNumeric ; MULTI_VALUED ; .* -# 16.0 -kFanqie ; MULTI_VALUED ; .* -kZhuang ; MULTI_VALUED ; .* - -kSrc_NushuDuben ; SINGLE_VALUED ; [0-9]+\.[0-9]+ -kReading ; SINGLE_VALUED ; .* -kRSTUnicode ; SINGLE_VALUED ; [0-9]+\.[0-9]+ -kTGT_MergedSrc ; SINGLE_VALUED ; H2004-[AB]-\d{4}|H2021-\d{6}|L(19(86|97)|20(06|12))-\d{4}|L2008-\d{4}([AB]|-\d{4})?|N1966-\d{3}-\d{2}[0-9A-Z]{1,2}|N5217-\d{2}|N5314-\d{2}|S1968-\d{4}|UTN42-\d{3} -# Regex patterns from UAX #57 -kEH_Cat ; SINGLE_VALUED ; ([A-IK-Z]|AA)-\d{2}-\d{3} -kEH_Desc ; SINGLE_VALUED ; [^\t"]+ -kEH_Func ; MULTI_VALUED ; [^\t]+ -kEH_FVal ; MULTI_VALUED ; [BDF-HJKMNPR-TWY-bdf-hjkmnpr-twy\.,/\-\+=;?>&\(\)\{\}\s\x{303}\x{30C}\x{323}\x{32E}\x{331}\x{A722}\x{A723}\x{A724}\x{A725}\x{A7BC}\x{A7BD}]+ -kEH_HG ; MULTI_VALUED ; ([A-IK-Z]|AA)\d{1,3}[A-Za-z]{0,2} -kEH_IFAO ; MULTI_VALUED ; \d{1,3},\d{1,2}[ab]? -kEH_JSesh ; MULTI_VALUED ; ([A-IK-Z]|Aa|NL|NU|Ff)\d{1,3}[A-Za-z]{0,5}|(US1|US22|US248|US685)([A-IK-Z]|Aa|NL|NU)\d{1,3}[A-Za-z]{0,5} -kEH_UniK ; SINGLE_VALUED ; ([A-IK-Z]|AA|NL|NU)\d{3}[A-Z]{0,2}|HJ ([A-IK-Z]|AA)\d{3}[A-Z]{0,2} - -# 17.0 -kEH_AltSeq ; SINGLE_VALUED ; [0-9A-F]{5}(\s[0-9A-F]{4,5})* -kTayNumeric ; SINGLE_VALUED ; NaN|[0-9]+ - -# 18.0 -kTGT_Numeric ; SINGLE_VALUED ; NaN|$digit+|$positiveDecimal -kJURC_Numeric ; SINGLE_VALUED ; [1-9]\d{0,4} +# Regex patterns from UAX #57 (Unikemet) +kEH_AltSeq ; SINGLE_VALUED ; [0-9A-F]{5}(\s[0-9A-F]{4,5})* +kEH_Cat ; SINGLE_VALUED ; ([A-IK-Z]|AA)-\d{2}-\d{3} +kEH_Desc ; SINGLE_VALUED ; [^\t"]+ +kEH_Func ; MULTI_VALUED ; [^\t]+ +kEH_FVal ; MULTI_VALUED ; [BDF-HJKMNPR-TWY-bdf-hjkmnpr-twy\.,/\-\+=;?>&\(\)\{\}\s\x{303}\x{30C}\x{323}\x{32E}\x{331}\x{A722}\x{A723}\x{A724}\x{A725}\x{A7BC}\x{A7BD}]+ +kEH_HG ; MULTI_VALUED ; ([A-IK-Z]|AA)\d{1,3}[A-Za-z]{0,2} +kEH_IFAO ; MULTI_VALUED ; \d{1,3},\d{1,2}[ab]? +kEH_JSesh ; MULTI_VALUED ; ([A-IK-Z]|Aa|NL|NU|Ff)\d{1,3}[A-Za-z]{0,5}|(US1|US22|US248|US685)([A-IK-Z]|Aa|NL|NU)\d{1,3}[A-Za-z]{0,5} +kEH_UniK ; SINGLE_VALUED ; ([A-IK-Z]|AA|NL|NU)\d{3}[A-Z]{0,2}|HJ ([A-IK-Z]|AA)\d{3}[A-Z]{0,2} + +# Regex patterns from UAX #58 (Link Detection) +Link_Bracket; SINGLE_VALUED ; $codePoint + +# Regex patterns from UAX #60 (Non Han Ideographic Scripts) +## Jurchen kJURC_NCReading ; SINGLE_VALUED ; [^\t"]+ -kJURC_Src ; SINGLE_VALUED ; NC:\d{3}\.\d{2}(,\d{3}\.\d{2})?|SJ-B\:\d{3}[A-Z]\.\d|JJ\:\d{3}|N5131\:X-\d{4} +kJURC_Numeric ; SINGLE_VALUED ; [1-9]\d{0,4} kJURC_RSUnicode ; SINGLE_VALUED ; [1-9]\d{0,1}\.[1-9]\d{0,1} -kSEAL_THXSrc ; SINGLE_VALUED ; TH-[0-9]{5}|TH-(X|Y)[0-9]{3}|KD-[0-9A-F]{5} -kSEAL_CCZSrc ; SINGLE_VALUED ; C-[0-9]{5} -kSEAL_DYCSrc ; SINGLE_VALUED ; D-[0-9]{5} -kSEAL_QJZSrc ; SINGLE_VALUED ; K-[0-9]{5} -kSEAL_MCJK ; MULTI_VALUED ; $codePoint -kSEAL_Rad ; MULTI_VALUED ; [0-9]{1,3}\.[A-F0-9]{4,5} - -normalization_correction_original ; SINGLE_VALUED ; [0-9A-F]{4,5} -normalization_correction_corrected ; SINGLE_VALUED ; [0-9A-F]{4,5} -normalization_correction_version ; SINGLE_VALUED ; [0-9]\.[0-9]\.[0-9] - -Names_List_Alias ; SINGLE_VALUED ; .* -Names_List_Comment ; SINGLE_VALUED ; .* -Names_List_Cross_Ref ; SINGLE_VALUED ; .* - -Do_Not_Emit_Dispreferred ; MULTI_VALUED ; .* -Do_Not_Emit_Dispreferred_Type ; MULTI_VALUED ; .* - - -# ============================= -# Catalog/Enum/Binary Properties -# All not listed are SINGLE_VALUED ; null -# ============================= - -Script_Extensions ; MULTI_VALUED ; -Standardized_Variant ; MULTI_VALUED ; .* - -Idn_Status ; SINGLE_VALUED ; -Idn_Mapping ; MULTI_VALUED ; $codePoint -Idn_2008 ; SINGLE_VALUED ; - -Identifier_Status ; SINGLE_VALUED ; -Identifier_Type ; MULTI_VALUED ; - -Confusable_SL ; MULTI_VALUED ; $codePoint -Confusable_SA ; MULTI_VALUED ; $codePoint -Confusable_ML ; MULTI_VALUED ; $codePoint -Confusable_MA ; MULTI_VALUED ; $codePoint - -#Emoji ; SINGLE_VALUED ; -#Emoji_Presentation ; SINGLE_VALUED ; -#Emoji_Modifier ; SINGLE_VALUED ; -#Emoji_Modifier_Base ; SINGLE_VALUED ; - -Math_Class ; ORDERED ; .* -Math_Class_Ex ; ORDERED ; .* -Math_Entity_Name ; MULTI_VALUED ; .* -Math_Entity_Set ; MULTI_VALUED ; .* +kJURC_Src ; SINGLE_VALUED ; NC:\d{3}\.\d{2}(,\d{3}\.\d{2})?|SJ-B\:\d{3}[A-Z]\.\d|JJ\:\d{3}|N5131\:X-\d{4} +## Nüshu +kNSHU_DubenSrc ; SINGLE_VALUED ; [1-9]\d\.\d{2} +kNSHU_Reading ; SINGLE_VALUED ; [a-z]+[1-9]\d{0,1} +## Tangut +kTGT_MergedSrc ; SINGLE_VALUED ; H2004-[AB]-\d{4}|H2021-\d{6}|L(19(86|97)|20(06|12))-\d{4}|L2008-\d{4}([AB]|-\d{4})?|N1966-\d{3}-\d{2}[0-9A-Z]{1,2}|N5217-\d{2}|N5314-\d{2}|S1968-\d{4}|UTN42-\d{3} +kTGT_Numeric ; SINGLE_VALUED ; NaN|$digit+|$positiveDecimal +## Seal +kSEAL_CCZSrc ; SINGLE_VALUED ; C-\d{5} +kSEAL_DYCSrc ; SINGLE_VALUED ; D-\d{5} +kSEAL_MCJK ; MULTI_VALUED ; [0-9A-F]{4,5} +kSEAL_QJZSrc ; SINGLE_VALUED ; K-\d{5} +kSEAL_Rad ; MULTI_VALUED ; \d{1,3}\.[A-F0-9]{4,5} +kSEAL_THXSrc ; SINGLE_VALUED ; TH-\d{5}|TH-(X|Y)\d{3}|KD-[0-9A-F]{5} From e3b15433dbca53f5ebf56757b678f8925cc43cf6 Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Thu, 5 Feb 2026 09:38:59 -0800 Subject: [PATCH 05/20] Added a new test for IndexPropertyRegex --- .github/workflows/cli-build-instructions.yml | 6 +++ docs/newunicodeproperties.md | 7 +++ .../unicode/props/PropertyParsingInfo.java | 14 ++--- .../propstest/TestIndexPropertyRegex.java | 51 +++++++++++++++++++ 4 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java diff --git a/.github/workflows/cli-build-instructions.yml b/.github/workflows/cli-build-instructions.yml index 2d426aa98..4edf4e8c4 100644 --- a/.github/workflows/cli-build-instructions.yml +++ b/.github/workflows/cli-build-instructions.yml @@ -276,6 +276,12 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # https://github.com/unicode-org/unicodetools/blob/main/docs/newunicodeproperties.md#checking-IndexPropertyRegex + - name: Run IndexPropertyRegex test + run: MAVEN_OPTS="-ea" mvn -s .github/workflows/mvn-settings.xml test -am -pl unicodetools -Dtest=TestIndexPropertyRegex#testIndexPropertyRegex -DfailIfNoTests=false -DCLDR_DIR=$(cd ../cldr ; pwd) -DUNICODETOOLS_GEN_DIR=$(cd Generated; pwd) -DUNICODETOOLS_REPO_DIR=$(pwd) -DUVERSION=$CURRENT_UVERSION + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # https://github.com/unicode-org/unicodetools/blob/main/docs/newunicodeproperties.md#checking-other-properties - name: Run command - Checking Other Properties run: | diff --git a/docs/newunicodeproperties.md b/docs/newunicodeproperties.md index 67ab2313d..bee31bb99 100644 --- a/docs/newunicodeproperties.md +++ b/docs/newunicodeproperties.md @@ -120,6 +120,13 @@ To test the XML properties from https://www.unicode.org/Public/XXX/ucdxml/ The problem is a difference in how missing values are handled. +## Checking IndexPropertyRegex + +Run TestIndexPropertyRegex to validate data files against the regular expressions in IndexPropertyRegex.txt that +correspond to the appropriate UcdProperty. + +This test works by loading all UcdProperties, so it also indirectly tests whether the property load works. + ## Checking Other Properties For a general test of properties, run CheckProperties. You can supply any of the diff --git a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java index fd8d59617..0c307664d 100644 --- a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java +++ b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java @@ -424,15 +424,15 @@ public String normalizeAndVerify(String string) { if (property == UcdProperty.Script_Extensions) { string = normalizeEnum(string); } - if (property.getDerivedStatus() != DerivedPropertyStatus.UCDNonProperty && - property.getDerivedStatus() != DerivedPropertyStatus.NonUCDNonProperty ) { + if (property.getDerivedStatus() != DerivedPropertyStatus.UCDNonProperty + && property.getDerivedStatus() != DerivedPropertyStatus.NonUCDNonProperty) { string = checkRegex2(string); } break; case String: // check regex - if (property.getDerivedStatus() != DerivedPropertyStatus.UCDNonProperty && - property.getDerivedStatus() != DerivedPropertyStatus.NonUCDNonProperty ) { + if (property.getDerivedStatus() != DerivedPropertyStatus.UCDNonProperty + && property.getDerivedStatus() != DerivedPropertyStatus.NonUCDNonProperty) { string = checkRegex2(string); if (string == null) { // nothing @@ -1949,9 +1949,9 @@ public static void setPropDefault( + propInfo.getDefaultValue(version)); } } else if (propInfo.getDefaultValue(version).equals(value)) { - } else if (propInfo.property == UcdProperty.Lowercase_Mapping || - propInfo.property == UcdProperty.Titlecase_Mapping || - propInfo.property == UcdProperty.Uppercase_Mapping) { + } else if (propInfo.property == UcdProperty.Lowercase_Mapping + || propInfo.property == UcdProperty.Titlecase_Mapping + || propInfo.property == UcdProperty.Uppercase_Mapping) { // These properties are intentionally set to in PropertyValueAliases.txt // But we should keep , , and } else { diff --git a/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java b/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java new file mode 100644 index 000000000..4ec88869c --- /dev/null +++ b/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java @@ -0,0 +1,51 @@ +package org.unicode.propstest; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.util.Map; +import java.util.Set; +import org.junit.jupiter.api.Test; +import org.unicode.props.IndexUnicodeProperties; +import org.unicode.props.PropertyStatus; +import org.unicode.props.UcdProperty; +import org.unicode.text.utility.Settings; + +public class TestIndexPropertyRegex { + + @Test + void testIndexPropertyRegex() throws IOException { + IndexUnicodeProperties latest = IndexUnicodeProperties.make(Settings.latestVersion); + for (final UcdProperty prop : UcdProperty.values()) { + if (PropertyStatus.getPropertyStatus(prop) != PropertyStatus.Deprecated) { + try { + latest.load(prop); + } catch (Exception e) { + System.out.println(prop + "\t" + latest.getUcdVersion()); + e.printStackTrace(); + return; + } + } + } + final Set>> dataLoadingErrors = + IndexUnicodeProperties.getDataLoadingErrors().keyValuesSet(); + if (!dataLoadingErrors.isEmpty()) { + System.err.println("Data loading errors: " + dataLoadingErrors.size()); + for (final Map.Entry> s : dataLoadingErrors) { + System.err.println("\t" + s.getKey()); + int max = 100; + for (final String value : s.getValue()) { + System.err.println("\t\t" + value); + if (--max < 0) { + System.err.println("…"); + break; + } + } + } + } + assertEquals( + 0, + dataLoadingErrors.size(), + "TestIndexPropertyRegex.testIndexPropertyRegex() failed"); + } +} From fa9997b386d740e3ac3230f4b1b83a21d140439a Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Thu, 5 Feb 2026 12:38:41 -0800 Subject: [PATCH 06/20] Revert Ned's change, just as a test --- .../main/java/org/unicode/text/UCD/MakeUnicodeFiles.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/unicodetools/src/main/java/org/unicode/text/UCD/MakeUnicodeFiles.java b/unicodetools/src/main/java/org/unicode/text/UCD/MakeUnicodeFiles.java index c2581652c..cdfa814cd 100644 --- a/unicodetools/src/main/java/org/unicode/text/UCD/MakeUnicodeFiles.java +++ b/unicodetools/src/main/java/org/unicode/text/UCD/MakeUnicodeFiles.java @@ -69,11 +69,8 @@ public class MakeUnicodeFiles { public static void main(String[] args) throws IOException { // Copy generated files to the dev directory by default - boolean cleanAndCopy = true; - if (Arrays.asList(args).contains("--no-copy")) { - // Leave dev untouched, files are only in Generated directory - cleanAndCopy = false; - } + boolean cleanAndCopy = + Arrays.asList(args).contains("-c"); // clean Bin & copy changed output int files = Arrays.asList(args).indexOf("--generate"); if (files >= 0) { From 5a1544922e9f3092578e1b338ccac35efa831604 Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Thu, 5 Feb 2026 12:42:25 -0800 Subject: [PATCH 07/20] Revert the revert --- .../main/java/org/unicode/text/UCD/MakeUnicodeFiles.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/unicodetools/src/main/java/org/unicode/text/UCD/MakeUnicodeFiles.java b/unicodetools/src/main/java/org/unicode/text/UCD/MakeUnicodeFiles.java index cdfa814cd..c2581652c 100644 --- a/unicodetools/src/main/java/org/unicode/text/UCD/MakeUnicodeFiles.java +++ b/unicodetools/src/main/java/org/unicode/text/UCD/MakeUnicodeFiles.java @@ -69,8 +69,11 @@ public class MakeUnicodeFiles { public static void main(String[] args) throws IOException { // Copy generated files to the dev directory by default - boolean cleanAndCopy = - Arrays.asList(args).contains("-c"); // clean Bin & copy changed output + boolean cleanAndCopy = true; + if (Arrays.asList(args).contains("--no-copy")) { + // Leave dev untouched, files are only in Generated directory + cleanAndCopy = false; + } int files = Arrays.asList(args).indexOf("--generate"); if (files >= 0) { From f5e453484f2b32728a43e3f57ae444f4b62df04d Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Thu, 5 Feb 2026 14:10:31 -0800 Subject: [PATCH 08/20] I do need to handle UCDNonProperty and NonUCDNonProperty, so putting those back and adding the missing regexes --- .../unicode/props/PropertyParsingInfo.java | 39 ++++++++----------- .../org/unicode/props/IndexPropertyRegex.txt | 7 ++++ 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java index 4715c93d0..0d6007a8f 100644 --- a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java +++ b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java @@ -423,35 +423,30 @@ public String normalizeAndVerify(String string) { case Miscellaneous: if (property == UcdProperty.Script_Extensions) { string = normalizeEnum(string); - } - if (property.getDerivedStatus() != DerivedPropertyStatus.UCDNonProperty - && property.getDerivedStatus() != DerivedPropertyStatus.NonUCDNonProperty) { + } else { string = checkRegex2(string); } break; case String: // check regex - if (property.getDerivedStatus() != DerivedPropertyStatus.UCDNonProperty - && property.getDerivedStatus() != DerivedPropertyStatus.NonUCDNonProperty) { - string = checkRegex2(string); - if (string == null) { - // nothing - } else { - try { - if (string.contains("|")) { - StringBuilder result = new StringBuilder(); - for (String part : BAR.split(string)) { - result.append(Utility.fromHex(part)); - } - string = result.toString(); - } else { - string = Utility.fromHex(string); + string = checkRegex2(string); + if (string == null) { + // nothing + } else { + try { + if (string.contains("|")) { + StringBuilder result = new StringBuilder(); + for (String part : BAR.split(string)) { + result.append(Utility.fromHex(part)); } - } catch (RuntimeException e) { - throw e; - } catch (Exception e) { - throw new UnicodePropertyException(property.toString()); + string = result.toString(); + } else { + string = Utility.fromHex(string); } + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new UnicodePropertyException(property.toString()); } } break; diff --git a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt index 03ede73cc..ad2f7a63d 100644 --- a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt +++ b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt @@ -72,17 +72,23 @@ Identifier_Type ; MULTI_VALUED ; Math_Class ; ORDERED ; ### Other UCD data +Arabic_Shaping_Schematic_Name ; SINGLE_VALUED ; .* CJK_Radical ; ORDERED ; [0-9]{1,3}'{0,3} Do_Not_Emit_Dispreferred ; MULTI_VALUED ; .* Do_Not_Emit_Dispreferred_Type ; MULTI_VALUED ; +Do_Not_Emit_Preferred ; MULTI_VALUED ; .* Emoji_DCM ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_KDDI ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_SB ; SINGLE_VALUED ; [0-9A-F]{4} +emoji_variation_sequence ; SINGLE_VALUED ; text style|emoji style Named_Sequences ; SINGLE_VALUED ; $name Named_Sequences_Prov ; SINGLE_VALUED ; $name Names_List_Alias ; SINGLE_VALUED ; .* Names_List_Comment ; SINGLE_VALUED ; .* Names_List_Cross_Ref ; SINGLE_VALUED ; .* +Names_List_Subheader ; SINGLE_VALUED ; .* +Names_List_Subheader_Notice ; SINGLE_VALUED ; .* +Non_Unihan_Numeric_Value ; SINGLE_VALUED ; NaN|$rational normalization_correction_corrected ; SINGLE_VALUED ; [0-9A-F]{4,5} normalization_correction_original ; SINGLE_VALUED ; [0-9A-F]{4,5} normalization_correction_version ; SINGLE_VALUED ; [0-9]\.[0-9]\.[0-9] @@ -97,6 +103,7 @@ Idn_2008 ; SINGLE_VALUED ; Idn_Mapping ; SINGLE_VALUED ; $codePoints Idn_Status ; SINGLE_VALUED ; Math_Class_Ex ; ORDERED ; +Math_Descriptive_Comments ; MULTI_VALUED ; .* Math_Entity_Name ; MULTI_VALUED ; .* Math_Entity_Set ; MULTI_VALUED ; .* From 8009961680c4bd6124bc7f989855fa16a3492893 Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Thu, 5 Feb 2026 14:45:08 -0800 Subject: [PATCH 09/20] Flailing, trying to figure out regexes --- .../main/resources/org/unicode/props/IndexPropertyRegex.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt index ad2f7a63d..c16c3b2c3 100644 --- a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt +++ b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt @@ -86,8 +86,8 @@ Named_Sequences_Prov ; SINGLE_VALUED ; $name Names_List_Alias ; SINGLE_VALUED ; .* Names_List_Comment ; SINGLE_VALUED ; .* Names_List_Cross_Ref ; SINGLE_VALUED ; .* -Names_List_Subheader ; SINGLE_VALUED ; .* -Names_List_Subheader_Notice ; SINGLE_VALUED ; .* +Names_List_Subheader ; MULTI_VALUED ; .* +Names_List_Subheader_Notice ; MULTI_VALUED ; .* Non_Unihan_Numeric_Value ; SINGLE_VALUED ; NaN|$rational normalization_correction_corrected ; SINGLE_VALUED ; [0-9A-F]{4,5} normalization_correction_original ; SINGLE_VALUED ; [0-9A-F]{4,5} From ae585572bc7ad79da0988e62b1cda65f35bfeea1 Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Thu, 5 Feb 2026 15:02:38 -0800 Subject: [PATCH 10/20] Going back to excluding UCDNonProperty and NonUCDNonProperty if they are Miscellaneous --- .../main/java/org/unicode/props/PropertyParsingInfo.java | 4 +++- .../main/resources/org/unicode/props/IndexPropertyRegex.txt | 6 ------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java index 0d6007a8f..4d1ca595f 100644 --- a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java +++ b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java @@ -423,7 +423,9 @@ public String normalizeAndVerify(String string) { case Miscellaneous: if (property == UcdProperty.Script_Extensions) { string = normalizeEnum(string); - } else { + } + if (property.getDerivedStatus() != DerivedPropertyStatus.UCDNonProperty + && property.getDerivedStatus() != DerivedPropertyStatus.NonUCDNonProperty) { string = checkRegex2(string); } break; diff --git a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt index c16c3b2c3..5f2c618eb 100644 --- a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt +++ b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt @@ -72,7 +72,6 @@ Identifier_Type ; MULTI_VALUED ; Math_Class ; ORDERED ; ### Other UCD data -Arabic_Shaping_Schematic_Name ; SINGLE_VALUED ; .* CJK_Radical ; ORDERED ; [0-9]{1,3}'{0,3} Do_Not_Emit_Dispreferred ; MULTI_VALUED ; .* Do_Not_Emit_Dispreferred_Type ; MULTI_VALUED ; @@ -80,15 +79,11 @@ Do_Not_Emit_Preferred ; MULTI_VALUED ; .* Emoji_DCM ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_KDDI ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_SB ; SINGLE_VALUED ; [0-9A-F]{4} -emoji_variation_sequence ; SINGLE_VALUED ; text style|emoji style Named_Sequences ; SINGLE_VALUED ; $name Named_Sequences_Prov ; SINGLE_VALUED ; $name Names_List_Alias ; SINGLE_VALUED ; .* Names_List_Comment ; SINGLE_VALUED ; .* Names_List_Cross_Ref ; SINGLE_VALUED ; .* -Names_List_Subheader ; MULTI_VALUED ; .* -Names_List_Subheader_Notice ; MULTI_VALUED ; .* -Non_Unihan_Numeric_Value ; SINGLE_VALUED ; NaN|$rational normalization_correction_corrected ; SINGLE_VALUED ; [0-9A-F]{4,5} normalization_correction_original ; SINGLE_VALUED ; [0-9A-F]{4,5} normalization_correction_version ; SINGLE_VALUED ; [0-9]\.[0-9]\.[0-9] @@ -103,7 +98,6 @@ Idn_2008 ; SINGLE_VALUED ; Idn_Mapping ; SINGLE_VALUED ; $codePoints Idn_Status ; SINGLE_VALUED ; Math_Class_Ex ; ORDERED ; -Math_Descriptive_Comments ; MULTI_VALUED ; .* Math_Entity_Name ; MULTI_VALUED ; .* Math_Entity_Set ; MULTI_VALUED ; .* From 639958c8803fc0a82176cb5b9c6a4773782b5075 Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Thu, 5 Feb 2026 15:36:55 -0800 Subject: [PATCH 11/20] Well that didn't work --- .../main/java/org/unicode/props/PropertyParsingInfo.java | 4 +--- .../main/resources/org/unicode/props/IndexPropertyRegex.txt | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java index 4d1ca595f..0d6007a8f 100644 --- a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java +++ b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java @@ -423,9 +423,7 @@ public String normalizeAndVerify(String string) { case Miscellaneous: if (property == UcdProperty.Script_Extensions) { string = normalizeEnum(string); - } - if (property.getDerivedStatus() != DerivedPropertyStatus.UCDNonProperty - && property.getDerivedStatus() != DerivedPropertyStatus.NonUCDNonProperty) { + } else { string = checkRegex2(string); } break; diff --git a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt index 5f2c618eb..c16c3b2c3 100644 --- a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt +++ b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt @@ -72,6 +72,7 @@ Identifier_Type ; MULTI_VALUED ; Math_Class ; ORDERED ; ### Other UCD data +Arabic_Shaping_Schematic_Name ; SINGLE_VALUED ; .* CJK_Radical ; ORDERED ; [0-9]{1,3}'{0,3} Do_Not_Emit_Dispreferred ; MULTI_VALUED ; .* Do_Not_Emit_Dispreferred_Type ; MULTI_VALUED ; @@ -79,11 +80,15 @@ Do_Not_Emit_Preferred ; MULTI_VALUED ; .* Emoji_DCM ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_KDDI ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_SB ; SINGLE_VALUED ; [0-9A-F]{4} +emoji_variation_sequence ; SINGLE_VALUED ; text style|emoji style Named_Sequences ; SINGLE_VALUED ; $name Named_Sequences_Prov ; SINGLE_VALUED ; $name Names_List_Alias ; SINGLE_VALUED ; .* Names_List_Comment ; SINGLE_VALUED ; .* Names_List_Cross_Ref ; SINGLE_VALUED ; .* +Names_List_Subheader ; MULTI_VALUED ; .* +Names_List_Subheader_Notice ; MULTI_VALUED ; .* +Non_Unihan_Numeric_Value ; SINGLE_VALUED ; NaN|$rational normalization_correction_corrected ; SINGLE_VALUED ; [0-9A-F]{4,5} normalization_correction_original ; SINGLE_VALUED ; [0-9A-F]{4,5} normalization_correction_version ; SINGLE_VALUED ; [0-9]\.[0-9]\.[0-9] @@ -98,6 +103,7 @@ Idn_2008 ; SINGLE_VALUED ; Idn_Mapping ; SINGLE_VALUED ; $codePoints Idn_Status ; SINGLE_VALUED ; Math_Class_Ex ; ORDERED ; +Math_Descriptive_Comments ; MULTI_VALUED ; .* Math_Entity_Name ; MULTI_VALUED ; .* Math_Entity_Set ; MULTI_VALUED ; .* From ac617de4084d71ddcb1b8ef1e6f0fa30176f9fd2 Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Thu, 5 Feb 2026 15:56:29 -0800 Subject: [PATCH 12/20] It looks like tests are picked up automatically, so I don't need to add them to the build yaml --- .github/workflows/cli-build-instructions.yml | 6 ------ docs/newunicodeproperties.md | 7 ------- 2 files changed, 13 deletions(-) diff --git a/.github/workflows/cli-build-instructions.yml b/.github/workflows/cli-build-instructions.yml index 4edf4e8c4..2d426aa98 100644 --- a/.github/workflows/cli-build-instructions.yml +++ b/.github/workflows/cli-build-instructions.yml @@ -276,12 +276,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # https://github.com/unicode-org/unicodetools/blob/main/docs/newunicodeproperties.md#checking-IndexPropertyRegex - - name: Run IndexPropertyRegex test - run: MAVEN_OPTS="-ea" mvn -s .github/workflows/mvn-settings.xml test -am -pl unicodetools -Dtest=TestIndexPropertyRegex#testIndexPropertyRegex -DfailIfNoTests=false -DCLDR_DIR=$(cd ../cldr ; pwd) -DUNICODETOOLS_GEN_DIR=$(cd Generated; pwd) -DUNICODETOOLS_REPO_DIR=$(pwd) -DUVERSION=$CURRENT_UVERSION - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # https://github.com/unicode-org/unicodetools/blob/main/docs/newunicodeproperties.md#checking-other-properties - name: Run command - Checking Other Properties run: | diff --git a/docs/newunicodeproperties.md b/docs/newunicodeproperties.md index bee31bb99..67ab2313d 100644 --- a/docs/newunicodeproperties.md +++ b/docs/newunicodeproperties.md @@ -120,13 +120,6 @@ To test the XML properties from https://www.unicode.org/Public/XXX/ucdxml/ The problem is a difference in how missing values are handled. -## Checking IndexPropertyRegex - -Run TestIndexPropertyRegex to validate data files against the regular expressions in IndexPropertyRegex.txt that -correspond to the appropriate UcdProperty. - -This test works by loading all UcdProperties, so it also indirectly tests whether the property load works. - ## Checking Other Properties For a general test of properties, run CheckProperties. You can supply any of the From ceec7e51c77b5b3160fcec36bf5e5e4d9a313868 Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Thu, 5 Feb 2026 17:38:12 -0800 Subject: [PATCH 13/20] Try clearing old errors before starting fresh --- .../test/java/org/unicode/propstest/TestIndexPropertyRegex.java | 1 + 1 file changed, 1 insertion(+) diff --git a/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java b/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java index 4ec88869c..870a00e29 100644 --- a/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java +++ b/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java @@ -15,6 +15,7 @@ public class TestIndexPropertyRegex { @Test void testIndexPropertyRegex() throws IOException { + IndexUnicodeProperties.getDataLoadingErrors().clear(); IndexUnicodeProperties latest = IndexUnicodeProperties.make(Settings.latestVersion); for (final UcdProperty prop : UcdProperty.values()) { if (PropertyStatus.getPropertyStatus(prop) != PropertyStatus.Deprecated) { From 066e64b13d6348021366e288508e16219c1b670d Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Thu, 5 Feb 2026 17:53:53 -0800 Subject: [PATCH 14/20] Run GenerateEnums --- .../java/org/unicode/props/UcdProperty.java | 1118 ++++------------- .../org/unicode/props/UcdPropertyValues.java | 709 +++++------ 2 files changed, 538 insertions(+), 1289 deletions(-) diff --git a/unicodetools/src/main/java/org/unicode/props/UcdProperty.java b/unicodetools/src/main/java/org/unicode/props/UcdProperty.java index 699068771..1fb447fab 100644 --- a/unicodetools/src/main/java/org/unicode/props/UcdProperty.java +++ b/unicodetools/src/main/java/org/unicode/props/UcdProperty.java @@ -50,52 +50,28 @@ */ public enum UcdProperty { - // Numeric - Non_Unihan_Numeric_Value( - PropertyType.Numeric, DerivedPropertyStatus.UCDNonProperty, "Non_Unihan_Numeric_Value"), + // Numeric + Non_Unihan_Numeric_Value(PropertyType.Numeric, DerivedPropertyStatus.UCDNonProperty, "Non_Unihan_Numeric_Value"), Numeric_Value(PropertyType.Numeric, DerivedPropertyStatus.Approved, "nv"), - kAccountingNumeric( - PropertyType.Numeric, DerivedPropertyStatus.Approved, "cjkAccountingNumeric"), - kOtherNumeric(PropertyType.Numeric, DerivedPropertyStatus.Approved, "cjkOtherNumeric"), - kPrimaryNumeric( - PropertyType.Numeric, - DerivedPropertyStatus.Approved, - null, - ValueCardinality.Ordered, - "cjkPrimaryNumeric"), + kAccountingNumeric(PropertyType.Numeric, DerivedPropertyStatus.Approved, "cjkAccountingNumeric"), + kOtherNumeric(PropertyType.Numeric, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "cjkOtherNumeric"), + kPrimaryNumeric(PropertyType.Numeric, DerivedPropertyStatus.Approved, null, ValueCardinality.Ordered, "cjkPrimaryNumeric"), kTGT_Numeric(PropertyType.Numeric, DerivedPropertyStatus.Provisional, "kTGT_Numeric"), - kTayNumeric(PropertyType.Numeric, DerivedPropertyStatus.Provisional, "cjkTayNumeric"), - kVietnameseNumeric( - PropertyType.Numeric, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkVietnameseNumeric"), - kZhuangNumeric( - PropertyType.Numeric, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkZhuangNumeric"), + kTayNumeric(PropertyType.Numeric, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTayNumeric"), + kVietnameseNumeric(PropertyType.Numeric, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkVietnameseNumeric"), + kZhuangNumeric(PropertyType.Numeric, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkZhuangNumeric"), - // String + // String Bidi_Mirroring_Glyph(PropertyType.String, DerivedPropertyStatus.Approved, "bmg"), Bidi_Paired_Bracket(PropertyType.String, DerivedPropertyStatus.Approved, "bpb"), Case_Folding(PropertyType.String, DerivedPropertyStatus.Approved, "cf"), - Confusable_MA( - PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "ConfMA", "Confusable"), + Confusable_MA(PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "ConfMA", "Confusable"), Confusable_ML(PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "ConfML"), Confusable_SA(PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "ConfSA"), Confusable_SL(PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "ConfSL"), Decomposition_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "dm"), - Do_Not_Emit_Dispreferred( - PropertyType.String, - DerivedPropertyStatus.UCDNonProperty, - null, - ValueCardinality.Unordered, - "Do_Not_Emit_Dispreferred"), - Do_Not_Emit_Preferred( - PropertyType.String, DerivedPropertyStatus.UCDNonProperty, "Do_Not_Emit_Preferred"), + Do_Not_Emit_Dispreferred(PropertyType.String, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Unordered, "Do_Not_Emit_Dispreferred"), + Do_Not_Emit_Preferred(PropertyType.String, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Unordered, "Do_Not_Emit_Preferred"), Equivalent_Unified_Ideograph(PropertyType.String, DerivedPropertyStatus.Approved, "EqUIdeo"), FC_NFKC_Closure(PropertyType.String, DerivedPropertyStatus.Approved, "FC_NFKC"), Idn_Mapping(PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "idnm"), @@ -103,279 +79,96 @@ public enum UcdProperty { Lowercase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "lc"), NFKC_Casefold(PropertyType.String, DerivedPropertyStatus.Approved, "NFKC_CF"), NFKC_Simple_Casefold(PropertyType.String, DerivedPropertyStatus.Approved, "NFKC_SCF"), - Names_List_Cross_Ref( - PropertyType.String, - DerivedPropertyStatus.UCDNonProperty, - null, - ValueCardinality.Unordered, - "Names_List_Cross_Ref"), + Names_List_Cross_Ref(PropertyType.String, DerivedPropertyStatus.UCDNonProperty, "Names_List_Cross_Ref"), Simple_Case_Folding(PropertyType.String, DerivedPropertyStatus.Approved, "scf", "sfc"), Simple_Lowercase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "slc"), Simple_Titlecase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "stc"), Simple_Uppercase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "suc"), Titlecase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "tc"), Uppercase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "uc"), - kCompatibilityVariant( - PropertyType.String, DerivedPropertyStatus.Approved, "cjkCompatibilityVariant"), + kCompatibilityVariant(PropertyType.String, DerivedPropertyStatus.Approved, "cjkCompatibilityVariant"), kEH_AltSeq(PropertyType.String, DerivedPropertyStatus.Provisional, "kEH_AltSeq"), - kSEAL_MCJK(PropertyType.String, DerivedPropertyStatus.Provisional, "kSEAL_MCJK"), - kSimplifiedVariant( - PropertyType.String, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkSimplifiedVariant"), - kSpoofingVariant( - PropertyType.String, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkSpoofingVariant"), - kTraditionalVariant( - PropertyType.String, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkTraditionalVariant"), - normalization_correction_corrected( - PropertyType.String, - DerivedPropertyStatus.UCDNonProperty, - "normalization_correction_corrected"), - normalization_correction_original( - PropertyType.String, - DerivedPropertyStatus.UCDNonProperty, - "normalization_correction_original"), + kSEAL_MCJK(PropertyType.String, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "kSEAL_MCJK"), + kSimplifiedVariant(PropertyType.String, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSimplifiedVariant"), + kSpoofingVariant(PropertyType.String, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSpoofingVariant"), + kTraditionalVariant(PropertyType.String, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTraditionalVariant"), + normalization_correction_corrected(PropertyType.String, DerivedPropertyStatus.UCDNonProperty, "normalization_correction_corrected"), + normalization_correction_original(PropertyType.String, DerivedPropertyStatus.UCDNonProperty, "normalization_correction_original"), - // Miscellaneous - Arabic_Shaping_Schematic_Name( - PropertyType.Miscellaneous, - DerivedPropertyStatus.UCDNonProperty, - "Arabic_Shaping_Schematic_Name"), - CJK_Radical( - PropertyType.Miscellaneous, - DerivedPropertyStatus.UCDNonProperty, - null, - ValueCardinality.Ordered, - "CJKR"), + // Miscellaneous + Arabic_Shaping_Schematic_Name(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "Arabic_Shaping_Schematic_Name"), + CJK_Radical(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Ordered, "CJKR"), Emoji_DCM(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "EDCM"), Emoji_KDDI(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "EKDDI"), Emoji_SB(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "ESB"), ISO_Comment(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "isc"), Jamo_Short_Name(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "JSN"), - Math_Descriptive_Comments( - PropertyType.Miscellaneous, - DerivedPropertyStatus.NonUCDNonProperty, - "Math_Descriptive_Comments"), - Math_Entity_Name( - PropertyType.Miscellaneous, - DerivedPropertyStatus.NonUCDNonProperty, - null, - ValueCardinality.Unordered, - "Math_Entity_Name"), - Math_Entity_Set( - PropertyType.Miscellaneous, - DerivedPropertyStatus.NonUCDNonProperty, - null, - ValueCardinality.Unordered, - "Math_Entity_Set"), + Math_Descriptive_Comments(PropertyType.Miscellaneous, DerivedPropertyStatus.NonUCDNonProperty, null, ValueCardinality.Unordered, "Math_Descriptive_Comments"), + Math_Entity_Name(PropertyType.Miscellaneous, DerivedPropertyStatus.NonUCDNonProperty, null, ValueCardinality.Unordered, "Math_Entity_Name"), + Math_Entity_Set(PropertyType.Miscellaneous, DerivedPropertyStatus.NonUCDNonProperty, null, ValueCardinality.Unordered, "Math_Entity_Set"), Name(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "na"), - Name_Alias( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Approved, - null, - ValueCardinality.Unordered, - "Name_Alias"), + Name_Alias(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "Name_Alias"), Named_Sequences(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "NS"), Named_Sequences_Prov(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "NSP"), - Names_List_Alias( - PropertyType.Miscellaneous, - DerivedPropertyStatus.UCDNonProperty, - null, - ValueCardinality.Unordered, - "Names_List_Alias"), - Names_List_Comment( - PropertyType.Miscellaneous, - DerivedPropertyStatus.UCDNonProperty, - null, - ValueCardinality.Unordered, - "Names_List_Comment"), - Names_List_Subheader( - PropertyType.Miscellaneous, - DerivedPropertyStatus.UCDNonProperty, - "Names_List_Subheader", - "subhead"), - Names_List_Subheader_Notice( - PropertyType.Miscellaneous, - DerivedPropertyStatus.UCDNonProperty, - "Names_List_Subheader_Notice"), - Standardized_Variant( - PropertyType.Miscellaneous, - DerivedPropertyStatus.UCDNonProperty, - null, - ValueCardinality.Unordered, - "SV"), + Names_List_Alias(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "Names_List_Alias"), + Names_List_Comment(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "Names_List_Comment"), + Names_List_Subheader(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Unordered, "Names_List_Subheader", "subhead"), + Names_List_Subheader_Notice(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Unordered, "Names_List_Subheader_Notice"), + Standardized_Variant(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Unordered, "SV"), Unicode_1_Name(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "na1"), - emoji_variation_sequence( - PropertyType.Miscellaneous, - DerivedPropertyStatus.UCDNonProperty, - "emoji_variation_sequence"), - kAlternateHanYu( - PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateHanYu"), + emoji_variation_sequence(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "emoji_variation_sequence"), + kAlternateHanYu(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateHanYu"), kAlternateJEF(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateJEF"), - kAlternateKangXi( - PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateKangXi"), - kAlternateMorohashi( - PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateMorohashi"), - kAlternateTotalStrokes( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkAlternateTotalStrokes"), + kAlternateKangXi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateKangXi"), + kAlternateMorohashi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateMorohashi"), + kAlternateTotalStrokes(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkAlternateTotalStrokes"), kBigFive(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkBigFive"), kCCCII(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkCCCII"), kCNS1986(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkCNS1986"), kCNS1992(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkCNS1992"), kCangjie(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkCangjie"), - kCantonese( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkCantonese"), + kCantonese(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkCantonese"), kCheungBauer(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkCheungBauer"), - kCheungBauerIndex( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkCheungBauerIndex"), - kCihaiT( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkCihaiT"), - kCowles( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkCowles"), + kCheungBauerIndex(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkCheungBauerIndex"), + kCihaiT(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkCihaiT"), + kCowles(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkCowles"), kDaeJaweon(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkDaeJaweon"), kDefinition(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkDefinition"), kEACC(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkEACC"), kEH_Cat(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kEH_Cat"), kEH_Desc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kEH_Desc"), - kEH_FVal( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "kEH_FVal"), - kEH_Func( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "kEH_Func"), - kEH_HG( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Approved, - null, - ValueCardinality.Unordered, - "kEH_HG"), - kEH_IFAO( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Approved, - null, - ValueCardinality.Unordered, - "kEH_IFAO"), - kEH_JSesh( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Approved, - null, - ValueCardinality.Unordered, - "kEH_JSesh"), + kEH_FVal(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "kEH_FVal"), + kEH_Func(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "kEH_Func"), + kEH_HG(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "kEH_HG"), + kEH_IFAO(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "kEH_IFAO"), + kEH_JSesh(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "kEH_JSesh"), kEH_UniK(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kEH_UniK"), - kFanqie( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkFanqie"), - kFenn( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkFenn"), - kFennIndex( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkFennIndex"), - kFourCornerCode( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkFourCornerCode"), + kFanqie(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkFanqie"), + kFenn(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkFenn"), + kFennIndex(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkFennIndex"), + kFourCornerCode(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkFourCornerCode"), kFrequency(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkFrequency"), kGB0(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGB0"), kGB1(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGB1"), kGB3(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGB3"), - kGB5(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGB5"), + kGB5(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkGB5"), kGB7(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGB7"), kGB8(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGB8"), - kGSR( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkGSR"), + kGSR(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkGSR"), kGradeLevel(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGradeLevel"), kHDZRadBreak(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkHDZRadBreak"), - kHKGlyph( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkHKGlyph"), + kHKGlyph(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkHKGlyph"), kHKSCS(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkHKSCS"), - kHanYu( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkHanYu"), - kHangul( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkHangul"), - kHanyuPinlu( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkHanyuPinlu"), - kHanyuPinyin( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkHanyuPinyin"), - kIBMJapan(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkIBMJapan"), - kIICore(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkIICore"), - kIRGDaeJaweon(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkIRGDaeJaweon"), - kIRGDaiKanwaZiten( - PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkIRGDaiKanwaZiten"), - kIRGHanyuDaZidian( - PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkIRGHanyuDaZidian"), - kIRGKangXi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkIRGKangXi"), + kHanYu(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkHanYu"), + kHangul(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkHangul"), + kHanyuPinlu(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkHanyuPinlu"), + kHanyuPinyin(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkHanyuPinyin"), + kIBMJapan(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkIBMJapan"), + kIICore(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "cjkIICore"), + kIRGDaeJaweon(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkIRGDaeJaweon"), + kIRGDaiKanwaZiten(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkIRGDaiKanwaZiten"), + kIRGHanyuDaZidian(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkIRGHanyuDaZidian"), + kIRGKangXi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkIRGKangXi"), kIRG_GSource(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkIRG_GSource"), kIRG_HSource(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkIRG_HSource"), kIRG_JSource(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkIRG_JSource"), @@ -388,694 +181,229 @@ public enum UcdProperty { kIRG_USource(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkIRG_USource"), kIRG_VSource(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkIRG_VSource"), kJHJ(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkJHJ"), - kJIS0213(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkJIS0213"), - kJURC_NCReading( - PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kJURC_NCReading"), + kJIS0213(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJIS0213"), + kJURC_NCReading(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kJURC_NCReading"), kJURC_Numeric(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kJURC_Numeric"), - kJURC_RSUnicode( - PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kJURC_RSUnicode"), + kJURC_RSUnicode(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kJURC_RSUnicode"), kJURC_Src(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kJURC_Src"), kJa(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkJa"), - kJapanese( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkJapanese"), - kJapaneseKun( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkJapaneseKun"), - kJapaneseOn( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkJapaneseOn"), - kJinmeiyoKanji( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkJinmeiyoKanji"), - kJis0(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkJis0"), - kJis1(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkJis1"), - kJoyoKanji( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkJoyoKanji"), + kJapanese(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJapanese"), + kJapaneseKun(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJapaneseKun"), + kJapaneseOn(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJapaneseOn"), + kJinmeiyoKanji(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJinmeiyoKanji"), + kJis0(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJis0"), + kJis1(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJis1"), + kJoyoKanji(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJoyoKanji"), kKPS0(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkKPS0"), kKPS1(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkKPS1"), kKSC0(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkKSC0"), kKSC1(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkKSC1"), - kKangXi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkKangXi"), - kKarlgren(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkKarlgren"), - kKorean( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkKorean"), - kKoreanEducationHanja( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkKoreanEducationHanja"), - kKoreanName( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkKoreanName"), - kLau( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkLau"), - kMainlandTelegraph( - PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkMainlandTelegraph"), - kMandarin( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Approved, - null, - ValueCardinality.Ordered, - "cjkMandarin"), - kMatthews(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkMatthews"), - kMeyerWempe( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkMeyerWempe"), - kMojiJoho( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkMojiJoho"), - kMorohashi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkMorohashi"), - kNSHU_DubenSrc( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Approved, - "kNSHU_DubenSrc", - new String[] {}, - new String[] { - "kSrc_NushuDuben", - }), - kNSHU_Reading( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - "kNSHU_Reading", - "kReading"), - kNelson( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkNelson"), - kPhonetic( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkPhonetic"), + kKangXi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkKangXi"), + kKarlgren(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkKarlgren"), + kKorean(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkKorean"), + kKoreanEducationHanja(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkKoreanEducationHanja"), + kKoreanName(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkKoreanName"), + kLau(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkLau"), + kMainlandTelegraph(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkMainlandTelegraph"), + kMandarin(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Ordered, "cjkMandarin"), + kMatthews(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkMatthews"), + kMeyerWempe(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkMeyerWempe"), + kMojiJoho(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkMojiJoho"), + kMorohashi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkMorohashi"), + kNSHU_DubenSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kNSHU_DubenSrc", new String[]{}, new String[]{"kSrc_NushuDuben", }), + kNSHU_Reading(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kNSHU_Reading", "kReading"), + kNelson(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkNelson"), + kPhonetic(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkPhonetic"), kPseudoGB1(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkPseudoGB1"), - kRSAdobe_Japan1_6( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkRSAdobe_Japan1_6"), + kRSAdobe_Japan1_6(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkRSAdobe_Japan1_6"), kRSJapanese(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkRSJapanese"), kRSKanWa(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkRSKanWa"), kRSKangXi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkRSKangXi"), kRSKorean(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkRSKorean"), kRSMerged(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkRSMerged"), - kRSUnicode( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Approved, - null, - ValueCardinality.Ordered, - "cjkRSUnicode", - "Unicode_Radical_Stroke", - "URS"), - kSBGY( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkSBGY"), + kRSUnicode(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Ordered, "cjkRSUnicode", "Unicode_Radical_Stroke", "URS"), + kSBGY(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSBGY"), kSEAL_CCZSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kSEAL_CCZSrc"), kSEAL_DYCSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kSEAL_DYCSrc"), kSEAL_QJZSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kSEAL_QJZSrc"), - kSEAL_Rad(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kSEAL_Rad"), + kSEAL_Rad(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "kSEAL_Rad"), kSEAL_THXSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kSEAL_THXSrc"), - kSMSZD2003Index( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkSMSZD2003Index"), - kSMSZD2003Readings( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkSMSZD2003Readings"), - kSemanticVariant( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkSemanticVariant"), - kSpecializedSemanticVariant( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkSpecializedSemanticVariant"), - kStrange( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkStrange"), - kTGH( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkTGH"), - kTGHZ2013( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkTGHZ2013"), + kSMSZD2003Index(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSMSZD2003Index"), + kSMSZD2003Readings(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSMSZD2003Readings"), + kSemanticVariant(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSemanticVariant"), + kSpecializedSemanticVariant(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSpecializedSemanticVariant"), + kStrange(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkStrange"), + kTGH(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTGH"), + kTGHZ2013(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTGHZ2013"), kTGT_MergedSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kTGT_MergedSrc"), - kTGT_RSUnicode( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - "kTGT_RSUnicode", - "kRSTUnicode"), - kTaiwanTelegraph( - PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkTaiwanTelegraph"), - kTang( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkTang"), - kTotalStrokes( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Approved, - null, - ValueCardinality.Ordered, - "cjkTotalStrokes"), - kUnihanCore2020( - PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkUnihanCore2020"), - kVietnamese( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkVietnamese"), - kXHC1983( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkXHC1983"), - kXerox(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkXerox"), - kZVariant(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkZVariant"), - kZhuang( - PropertyType.Miscellaneous, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "cjkZhuang"), - normalization_correction_version( - PropertyType.Miscellaneous, - DerivedPropertyStatus.UCDNonProperty, - "normalization_correction_version"), + kTGT_RSUnicode(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kTGT_RSUnicode", "kRSTUnicode"), + kTaiwanTelegraph(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTaiwanTelegraph"), + kTang(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTang"), + kTotalStrokes(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Ordered, "cjkTotalStrokes"), + kUnihanCore2020(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkUnihanCore2020"), + kVietnamese(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkVietnamese"), + kXHC1983(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkXHC1983"), + kXerox(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkXerox"), + kZVariant(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkZVariant"), + kZhuang(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkZhuang"), + normalization_correction_version(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "normalization_correction_version"), - // Catalog + // Catalog Age(PropertyType.Catalog, DerivedPropertyStatus.Approved, Age_Values.class, null, "age"), Block(PropertyType.Catalog, DerivedPropertyStatus.Approved, Block_Values.class, null, "blk"), Script(PropertyType.Catalog, DerivedPropertyStatus.Approved, Script_Values.class, null, "sc"), - Script_Extensions( - PropertyType.Catalog, - DerivedPropertyStatus.Approved, - Script_Values.class, - ValueCardinality.Unordered, - "scx"), + Script_Extensions(PropertyType.Catalog, DerivedPropertyStatus.Approved, Script_Values.class, ValueCardinality.Unordered, "scx"), - // Enumerated - Bidi_Class( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Bidi_Class_Values.class, - null, - "bc"), - Bidi_Paired_Bracket_Type( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Bidi_Paired_Bracket_Type_Values.class, - null, - "bpt"), - Canonical_Combining_Class( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Canonical_Combining_Class_Values.class, - null, - "ccc"), - Decomposition_Type( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Decomposition_Type_Values.class, - null, - "dt"), - Do_Not_Emit_Dispreferred_Type( - PropertyType.Enumerated, - DerivedPropertyStatus.UCDNonProperty, - Do_Not_Emit_Dispreferred_Type_Values.class, - ValueCardinality.Unordered, - "Do_Not_Emit_Dispreferred_Type"), - Do_Not_Emit_Type( - PropertyType.Enumerated, - DerivedPropertyStatus.UCDNonProperty, - Do_Not_Emit_Type_Values.class, - null, - "Do_Not_Emit_Type"), - East_Asian_Width( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - East_Asian_Width_Values.class, - null, - "ea"), - General_Category( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - General_Category_Values.class, - null, - "gc"), - Grapheme_Cluster_Break( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Grapheme_Cluster_Break_Values.class, - null, - "GCB"), - Hangul_Syllable_Type( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Hangul_Syllable_Type_Values.class, - null, - "hst"), - IDNA2008_Category( - PropertyType.Enumerated, - DerivedPropertyStatus.NonUCDProperty, - IDNA2008_Category_Values.class, - null, - "IDNA2008_Category"), - Identifier_Status( - PropertyType.Enumerated, - DerivedPropertyStatus.NonUCDProperty, - Identifier_Status_Values.class, - null, - "ID_Status"), - Identifier_Type( - PropertyType.Enumerated, - DerivedPropertyStatus.NonUCDProperty, - Identifier_Type_Values.class, - ValueCardinality.Unordered, - "ID_Type"), - Idn_2008( - PropertyType.Enumerated, - DerivedPropertyStatus.NonUCDNonProperty, - Idn_2008_Values.class, - null, - "idn8"), - Idn_Status( - PropertyType.Enumerated, - DerivedPropertyStatus.NonUCDNonProperty, - Idn_Status_Values.class, - null, - "idns"), - Indic_Conjunct_Break( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Indic_Conjunct_Break_Values.class, - null, - "InCB"), - Indic_Positional_Category( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Indic_Positional_Category_Values.class, - null, - "InPC"), - Indic_Syllabic_Category( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Indic_Syllabic_Category_Values.class, - null, - "InSC"), - Joining_Group( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Joining_Group_Values.class, - null, - "jg"), - Joining_Type( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Joining_Type_Values.class, - null, - "jt"), - Line_Break( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Line_Break_Values.class, - null, - "lb"), - Link_Term( - PropertyType.Enumerated, - DerivedPropertyStatus.NonUCDProperty, - Link_Term_Values.class, - null, - "Link_Term"), - Math_Class( - PropertyType.Enumerated, - DerivedPropertyStatus.NonUCDProperty, - Math_Class_Values.class, - ValueCardinality.Ordered, - "Math_Class"), - Math_Class_Ex( - PropertyType.Enumerated, - DerivedPropertyStatus.NonUCDNonProperty, - Math_Class_Ex_Values.class, - ValueCardinality.Ordered, - "Math_Class_Ex"), - NFC_Quick_Check( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - NFC_Quick_Check_Values.class, - null, - "NFC_QC"), - NFD_Quick_Check( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - NFD_Quick_Check_Values.class, - null, - "NFD_QC"), - NFKC_Quick_Check( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - NFKC_Quick_Check_Values.class, - null, - "NFKC_QC"), - NFKD_Quick_Check( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - NFKD_Quick_Check_Values.class, - null, - "NFKD_QC"), - Numeric_Type( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Numeric_Type_Values.class, - null, - "nt"), - Other_Joining_Type( - PropertyType.Enumerated, - DerivedPropertyStatus.UCDNonProperty, - Other_Joining_Type_Values.class, - null, - "Other_Joining_Type"), - RGI_Emoji_Qualification( - PropertyType.Enumerated, - DerivedPropertyStatus.NonUCDProperty, - RGI_Emoji_Qualification_Values.class, - null, - "RGI_Emoji_Qualification"), - Sentence_Break( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Sentence_Break_Values.class, - null, - "SB"), - Vertical_Orientation( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Vertical_Orientation_Values.class, - null, - "vo"), - Word_Break( - PropertyType.Enumerated, - DerivedPropertyStatus.Approved, - Word_Break_Values.class, - null, - "WB"), - kEH_Core( - PropertyType.Enumerated, - DerivedPropertyStatus.Provisional, - kEH_Core_Values.class, - null, - "kEH_Core"), + // Enumerated + Bidi_Class(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Bidi_Class_Values.class, null, "bc"), + Bidi_Paired_Bracket_Type(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Bidi_Paired_Bracket_Type_Values.class, null, "bpt"), + Canonical_Combining_Class(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Canonical_Combining_Class_Values.class, null, "ccc"), + Decomposition_Type(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Decomposition_Type_Values.class, null, "dt"), + Do_Not_Emit_Dispreferred_Type(PropertyType.Enumerated, DerivedPropertyStatus.UCDNonProperty, Do_Not_Emit_Dispreferred_Type_Values.class, ValueCardinality.Unordered, "Do_Not_Emit_Dispreferred_Type"), + Do_Not_Emit_Type(PropertyType.Enumerated, DerivedPropertyStatus.UCDNonProperty, Do_Not_Emit_Type_Values.class, null, "Do_Not_Emit_Type"), + East_Asian_Width(PropertyType.Enumerated, DerivedPropertyStatus.Approved, East_Asian_Width_Values.class, null, "ea"), + General_Category(PropertyType.Enumerated, DerivedPropertyStatus.Approved, General_Category_Values.class, null, "gc"), + Grapheme_Cluster_Break(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Grapheme_Cluster_Break_Values.class, null, "GCB"), + Hangul_Syllable_Type(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Hangul_Syllable_Type_Values.class, null, "hst"), + IDNA2008_Category(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, IDNA2008_Category_Values.class, null, "IDNA2008_Category"), + Identifier_Status(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, Identifier_Status_Values.class, null, "ID_Status"), + Identifier_Type(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, Identifier_Type_Values.class, ValueCardinality.Unordered, "ID_Type"), + Idn_2008(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDNonProperty, Idn_2008_Values.class, null, "idn8"), + Idn_Status(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDNonProperty, Idn_Status_Values.class, null, "idns"), + Indic_Conjunct_Break(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Indic_Conjunct_Break_Values.class, null, "InCB"), + Indic_Positional_Category(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Indic_Positional_Category_Values.class, null, "InPC"), + Indic_Syllabic_Category(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Indic_Syllabic_Category_Values.class, null, "InSC"), + Joining_Group(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Joining_Group_Values.class, null, "jg"), + Joining_Type(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Joining_Type_Values.class, null, "jt"), + Line_Break(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Line_Break_Values.class, null, "lb"), + Link_Term(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, Link_Term_Values.class, null, "Link_Term"), + Math_Class(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, Math_Class_Values.class, ValueCardinality.Ordered, "Math_Class"), + Math_Class_Ex(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDNonProperty, Math_Class_Ex_Values.class, ValueCardinality.Ordered, "Math_Class_Ex"), + NFC_Quick_Check(PropertyType.Enumerated, DerivedPropertyStatus.Approved, NFC_Quick_Check_Values.class, null, "NFC_QC"), + NFD_Quick_Check(PropertyType.Enumerated, DerivedPropertyStatus.Approved, NFD_Quick_Check_Values.class, null, "NFD_QC"), + NFKC_Quick_Check(PropertyType.Enumerated, DerivedPropertyStatus.Approved, NFKC_Quick_Check_Values.class, null, "NFKC_QC"), + NFKD_Quick_Check(PropertyType.Enumerated, DerivedPropertyStatus.Approved, NFKD_Quick_Check_Values.class, null, "NFKD_QC"), + Numeric_Type(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Numeric_Type_Values.class, null, "nt"), + Other_Joining_Type(PropertyType.Enumerated, DerivedPropertyStatus.UCDNonProperty, Other_Joining_Type_Values.class, null, "Other_Joining_Type"), + RGI_Emoji_Qualification(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, RGI_Emoji_Qualification_Values.class, null, "RGI_Emoji_Qualification"), + Sentence_Break(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Sentence_Break_Values.class, null, "SB"), + Vertical_Orientation(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Vertical_Orientation_Values.class, null, "vo"), + Word_Break(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Word_Break_Values.class, null, "WB"), + kEH_Core(PropertyType.Enumerated, DerivedPropertyStatus.Provisional, kEH_Core_Values.class, null, "kEH_Core"), - // Binary - ASCII_Hex_Digit( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "AHex"), + // Binary + ASCII_Hex_Digit(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "AHex"), Alphabetic(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Alpha"), - Basic_Emoji( - PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "BE"), + Basic_Emoji(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "BE"), Bidi_Control(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Bidi_C"), - Bidi_Mirrored( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Bidi_M"), + Bidi_Mirrored(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Bidi_M"), Case_Ignorable(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CI"), Cased(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Cased"), - Changes_When_Casefolded( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWCF"), - Changes_When_Casemapped( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWCM"), - Changes_When_Lowercased( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWL"), - Changes_When_NFKC_Casefolded( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWKCF"), - Changes_When_Titlecased( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWT"), - Changes_When_Uppercased( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWU"), - Composition_Exclusion( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CE"), + Changes_When_Casefolded(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWCF"), + Changes_When_Casemapped(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWCM"), + Changes_When_Lowercased(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWL"), + Changes_When_NFKC_Casefolded(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWKCF"), + Changes_When_Titlecased(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWT"), + Changes_When_Uppercased(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWU"), + Composition_Exclusion(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CE"), Dash(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Dash"), - Default_Ignorable_Code_Point( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "DI"), + Default_Ignorable_Code_Point(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "DI"), Deprecated(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Dep"), Diacritic(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Dia"), Emoji(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Emoji"), - Emoji_Component( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EComp"), + Emoji_Component(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EComp"), Emoji_Modifier(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EMod"), - Emoji_Modifier_Base( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EBase"), - Emoji_Presentation( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EPres"), - Expands_On_NFC( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFC"), - Expands_On_NFD( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFD"), - Expands_On_NFKC( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFKC"), - Expands_On_NFKD( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFKD"), - Extended_Pictographic( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ExtPict"), + Emoji_Modifier_Base(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EBase"), + Emoji_Presentation(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EPres"), + Expands_On_NFC(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFC"), + Expands_On_NFD(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFD"), + Expands_On_NFKC(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFKC"), + Expands_On_NFKD(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFKD"), + Extended_Pictographic(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ExtPict"), Extender(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Ext"), - Full_Composition_Exclusion( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Comp_Ex"), - Grapheme_Base( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Base"), - Grapheme_Extend( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Ext"), - Grapheme_Link( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Link"), + Full_Composition_Exclusion(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Comp_Ex"), + Grapheme_Base(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Base"), + Grapheme_Extend(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Ext"), + Grapheme_Link(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Link"), Hex_Digit(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Hex"), Hyphen(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Hyphen"), - IDS_Binary_Operator( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDSB"), - IDS_Trinary_Operator( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDST"), - IDS_Unary_Operator( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDSU"), - ID_Compat_Math_Continue( - PropertyType.Binary, - DerivedPropertyStatus.Approved, - Binary.class, - null, - "ID_Compat_Math_Continue"), - ID_Compat_Math_Start( - PropertyType.Binary, - DerivedPropertyStatus.Approved, - Binary.class, - null, - "ID_Compat_Math_Start"), + IDS_Binary_Operator(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDSB"), + IDS_Trinary_Operator(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDST"), + IDS_Unary_Operator(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDSU"), + ID_Compat_Math_Continue(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ID_Compat_Math_Continue"), + ID_Compat_Math_Start(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ID_Compat_Math_Start"), ID_Continue(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDC"), ID_Start(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDS"), Ideographic(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Ideo"), Join_Control(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Join_C"), - Link_Email( - PropertyType.Binary, - DerivedPropertyStatus.NonUCDProperty, - Binary.class, - null, - "Link_Email"), - Logical_Order_Exception( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "LOE"), + Link_Email(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "Link_Email"), + Logical_Order_Exception(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "LOE"), Lowercase(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Lower"), Math(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Math"), - Modifier_Combining_Mark( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "MCM"), - Noncharacter_Code_Point( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "NChar"), - Other_Alphabetic( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OAlpha"), - Other_Default_Ignorable_Code_Point( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ODI"), - Other_Grapheme_Extend( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OGr_Ext"), - Other_ID_Continue( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OIDC"), + Modifier_Combining_Mark(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "MCM"), + Noncharacter_Code_Point(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "NChar"), + Other_Alphabetic(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OAlpha"), + Other_Default_Ignorable_Code_Point(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ODI"), + Other_Grapheme_Extend(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OGr_Ext"), + Other_ID_Continue(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OIDC"), Other_ID_Start(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OIDS"), - Other_Lowercase( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OLower"), + Other_Lowercase(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OLower"), Other_Math(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OMath"), - Other_Uppercase( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OUpper"), - Pattern_Syntax( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Pat_Syn"), - Pattern_White_Space( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Pat_WS"), - Prepended_Concatenation_Mark( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "PCM"), - Quotation_Mark( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "QMark"), - RGI_Emoji( - PropertyType.Binary, - DerivedPropertyStatus.NonUCDProperty, - Binary.class, - null, - "RGI_Emoji"), - RGI_Emoji_Flag_Sequence( - PropertyType.Binary, - DerivedPropertyStatus.NonUCDProperty, - Binary.class, - null, - "REFS", - "Emoji_Flag_Sequence"), - RGI_Emoji_Keycap_Sequence( - PropertyType.Binary, - DerivedPropertyStatus.NonUCDProperty, - Binary.class, - null, - "REKS", - "Emoji_Keycap_Sequence", - "Emoji_Combining_Sequence"), - RGI_Emoji_Modifier_Sequence( - PropertyType.Binary, - DerivedPropertyStatus.NonUCDProperty, - Binary.class, - null, - "REMS", - "Emoji_Modifier_Sequence"), - RGI_Emoji_Tag_Sequence( - PropertyType.Binary, - DerivedPropertyStatus.NonUCDProperty, - Binary.class, - null, - "RETS", - "Emoji_Tag_Sequence"), - RGI_Emoji_Zwj_Sequence( - PropertyType.Binary, - DerivedPropertyStatus.NonUCDProperty, - Binary.class, - null, - "REZS", - "Emoji_Zwj_Sequence"), + Other_Uppercase(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OUpper"), + Pattern_Syntax(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Pat_Syn"), + Pattern_White_Space(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Pat_WS"), + Prepended_Concatenation_Mark(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "PCM"), + Quotation_Mark(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "QMark"), + RGI_Emoji(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "RGI_Emoji"), + RGI_Emoji_Flag_Sequence(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "REFS", "Emoji_Flag_Sequence"), + RGI_Emoji_Keycap_Sequence(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "REKS", "Emoji_Keycap_Sequence", "Emoji_Combining_Sequence"), + RGI_Emoji_Modifier_Sequence(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "REMS", "Emoji_Modifier_Sequence"), + RGI_Emoji_Tag_Sequence(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "RETS", "Emoji_Tag_Sequence"), + RGI_Emoji_Zwj_Sequence(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "REZS", "Emoji_Zwj_Sequence"), Radical(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Radical"), - Regional_Indicator( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "RI"), - Sentence_Terminal( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "STerm"), + Regional_Indicator(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "RI"), + Sentence_Terminal(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "STerm"), Soft_Dotted(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "SD"), - Terminal_Punctuation( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Term"), - Unified_Ideograph( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "UIdeo"), + Terminal_Punctuation(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Term"), + Unified_Ideograph(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "UIdeo"), Uppercase(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Upper"), - Variation_Selector( - PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "VS"), - White_Space( - PropertyType.Binary, - DerivedPropertyStatus.Approved, - Binary.class, - null, - "WSpace", - "space"), + Variation_Selector(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "VS"), + White_Space(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "WSpace", "space"), XID_Continue(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XIDC"), XID_Start(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XIDS"), - kEH_NoMirror( - PropertyType.Binary, - DerivedPropertyStatus.Approved, - Binary.class, - null, - "kEH_NoMirror"), - kEH_NoRotate( - PropertyType.Binary, - DerivedPropertyStatus.Approved, - Binary.class, - null, - "kEH_NoRotate"), + kEH_NoMirror(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "kEH_NoMirror"), + kEH_NoRotate(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "kEH_NoRotate"), -// Unknown -; + // Unknown + ; - private final PropertyType type; - private final DerivedPropertyStatus status; - private final PropertyNames names; +private final PropertyType type; + private final DerivedPropertyStatus status; private final PropertyNames names; // for enums private final NameMatcher name2enum; private final EnumSet enums; private final Class enumClass; private final ValueCardinality cardinality; - - private UcdProperty( - PropertyType type, - DerivedPropertyStatus status, - String shortName, - String[] otherNames, - String[] extraNames) { + + private UcdProperty(PropertyType type, + DerivedPropertyStatus status, + String shortName, + String[] otherNames, + String[] extraNames) { this.type = type; this.status = status; - names = - new PropertyNames( - UcdProperty.class, this, shortName, otherNames, extraNames); + names = new PropertyNames(UcdProperty.class, this, shortName, otherNames, extraNames); name2enum = null; enums = null; enumClass = null; cardinality = ValueCardinality.Singleton; } - private UcdProperty( - PropertyType type, - DerivedPropertyStatus status, - String shortName, - String... otherNames) { + + private UcdProperty(PropertyType type, + DerivedPropertyStatus status, + String shortName, + String... otherNames) { this.type = type; this.status = status; names = new PropertyNames(UcdProperty.class, this, shortName, otherNames); @@ -1106,7 +434,7 @@ private UcdProperty( enumClass = classItem; } } - + public ValueCardinality getCardinality() { return cardinality; } diff --git a/unicodetools/src/main/java/org/unicode/props/UcdPropertyValues.java b/unicodetools/src/main/java/org/unicode/props/UcdPropertyValues.java index 030fce126..0c8026135 100644 --- a/unicodetools/src/main/java/org/unicode/props/UcdPropertyValues.java +++ b/unicodetools/src/main/java/org/unicode/props/UcdPropertyValues.java @@ -17,7 +17,8 @@ public enum Binary implements Named { private final PropertyNames names; private Binary(String shortName, String... otherNames) { - names = new PropertyNames(Binary.class, this, shortName, otherNames); + names = new PropertyNames( + Binary.class, this, shortName, otherNames); } @Override @@ -30,8 +31,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Binary.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Binary.class); public static Binary forName(String name) { return NAME_MATCHER.get(name); @@ -63,7 +63,7 @@ public enum Age_Values implements Named { V12_1("12.1"), V13_0("13.0"), V13_1("13.1"), // TODO: there is no Unicode 13.1, see - // https://github.com/unicode-org/unicodetools/issues/100 +// https://github.com/unicode-org/unicodetools/issues/100 V14_0("14.0"), V15_0("15.0"), V15_1("15.1"), @@ -74,7 +74,8 @@ public enum Age_Values implements Named { private final PropertyNames names; private Age_Values(String shortName, String... otherNames) { - names = new PropertyNames(Age_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Age_Values.class, this, shortName, otherNames); } @Override @@ -87,15 +88,14 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Age_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Age_Values.class); public static Age_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Arabic_Shaping_Schematic_Name + // Arabic_Shaping_Schematic_Name public enum Bidi_Class_Values implements Named { Arabic_Letter("AL"), Arabic_Number("AN"), @@ -123,9 +123,8 @@ public enum Bidi_Class_Values implements Named { private final PropertyNames names; private Bidi_Class_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Bidi_Class_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Bidi_Class_Values.class, this, shortName, otherNames); } @Override @@ -138,16 +137,15 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Bidi_Class_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Bidi_Class_Values.class); public static Bidi_Class_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Bidi_Mirroring_Glyph - // Bidi_Paired_Bracket + // Bidi_Mirroring_Glyph + // Bidi_Paired_Bracket public enum Bidi_Paired_Bracket_Type_Values implements Named { Close("c"), None("n"), @@ -155,9 +153,8 @@ public enum Bidi_Paired_Bracket_Type_Values implements Named { private final PropertyNames names; private Bidi_Paired_Bracket_Type_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Bidi_Paired_Bracket_Type_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Bidi_Paired_Bracket_Type_Values.class, this, shortName, otherNames); } @Override @@ -170,8 +167,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Bidi_Paired_Bracket_Type_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Bidi_Paired_Bracket_Type_Values.class); public static Bidi_Paired_Bracket_Type_Values forName(String name) { return NAME_MATCHER.get(name); @@ -267,8 +263,7 @@ public enum Block_Values implements Named { Devanagari_Extended_A("Devanagari_Ext_A"), Combining_Diacritical_Marks("Diacriticals"), Combining_Diacritical_Marks_Extended("Diacriticals_Ext"), - Combining_Diacritical_Marks_For_Symbols( - "Diacriticals_For_Symbols", "Combining_Marks_For_Symbols"), + Combining_Diacritical_Marks_For_Symbols("Diacriticals_For_Symbols", "Combining_Marks_For_Symbols"), Combining_Diacritical_Marks_Supplement("Diacriticals_Sup"), Dingbats("Dingbats"), Dives_Akuru("Dives_Akuru"), @@ -537,9 +532,8 @@ public enum Block_Values implements Named { private final PropertyNames names; private Block_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Block_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Block_Values.class, this, shortName, otherNames); } @Override @@ -552,8 +546,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Block_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Block_Values.class); public static Block_Values forName(String name) { return NAME_MATCHER.get(name); @@ -721,9 +714,8 @@ public enum Canonical_Combining_Class_Values implements Named { private final PropertyNames names; private Canonical_Combining_Class_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Canonical_Combining_Class_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Canonical_Combining_Class_Values.class, this, shortName, otherNames); } @Override @@ -736,21 +728,20 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Canonical_Combining_Class_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Canonical_Combining_Class_Values.class); public static Canonical_Combining_Class_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Case_Folding - // CJK_Radical - // Confusable_MA - // Confusable_ML - // Confusable_SA - // Confusable_SL - // Decomposition_Mapping + // Case_Folding + // CJK_Radical + // Confusable_MA + // Confusable_ML + // Confusable_SA + // Confusable_SL + // Decomposition_Mapping public enum Decomposition_Type_Values implements Named { Canonical("Can", "can"), Compat("Com", "com"), @@ -773,9 +764,8 @@ public enum Decomposition_Type_Values implements Named { private final PropertyNames names; private Decomposition_Type_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Decomposition_Type_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Decomposition_Type_Values.class, this, shortName, otherNames); } @Override @@ -788,15 +778,14 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Decomposition_Type_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Decomposition_Type_Values.class); public static Decomposition_Type_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Do_Not_Emit_Dispreferred + // Do_Not_Emit_Dispreferred public enum Do_Not_Emit_Dispreferred_Type_Values implements Named { None("None"), Indic_Atomic_Consonant("Indic_Atomic_Consonant"), @@ -816,12 +805,8 @@ public enum Do_Not_Emit_Dispreferred_Type_Values implements Named { private final PropertyNames names; private Do_Not_Emit_Dispreferred_Type_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Do_Not_Emit_Dispreferred_Type_Values.class, - this, - shortName, - otherNames); + names = new PropertyNames( + Do_Not_Emit_Dispreferred_Type_Values.class, this, shortName, otherNames); } @Override @@ -834,15 +819,14 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Do_Not_Emit_Dispreferred_Type_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Do_Not_Emit_Dispreferred_Type_Values.class); public static Do_Not_Emit_Dispreferred_Type_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Do_Not_Emit_Preferred + // Do_Not_Emit_Preferred public enum Do_Not_Emit_Type_Values implements Named { None("None"), Indic_Atomic_Consonant("Indic_Atomic_Consonant"), @@ -862,9 +846,8 @@ public enum Do_Not_Emit_Type_Values implements Named { private final PropertyNames names; private Do_Not_Emit_Type_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Do_Not_Emit_Type_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Do_Not_Emit_Type_Values.class, this, shortName, otherNames); } @Override @@ -877,8 +860,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Do_Not_Emit_Type_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Do_Not_Emit_Type_Values.class); public static Do_Not_Emit_Type_Values forName(String name) { return NAME_MATCHER.get(name); @@ -895,9 +877,8 @@ public enum East_Asian_Width_Values implements Named { private final PropertyNames names; private East_Asian_Width_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - East_Asian_Width_Values.class, this, shortName, otherNames); + names = new PropertyNames( + East_Asian_Width_Values.class, this, shortName, otherNames); } @Override @@ -910,20 +891,19 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(East_Asian_Width_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(East_Asian_Width_Values.class); public static East_Asian_Width_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Emoji_DCM - // Emoji_KDDI - // Emoji_SB - // emoji_variation_sequence - // Equivalent_Unified_Ideograph - // FC_NFKC_Closure + // Emoji_DCM + // Emoji_KDDI + // Emoji_SB + // emoji_variation_sequence + // Equivalent_Unified_Ideograph + // FC_NFKC_Closure public enum General_Category_Values implements Named { Other("C"), Control("Cc", "cntrl"), @@ -966,9 +946,8 @@ public enum General_Category_Values implements Named { private final PropertyNames names; private General_Category_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - General_Category_Values.class, this, shortName, otherNames); + names = new PropertyNames( + General_Category_Values.class, this, shortName, otherNames); } @Override @@ -981,8 +960,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(General_Category_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(General_Category_Values.class); public static General_Category_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1011,9 +989,8 @@ public enum Grapheme_Cluster_Break_Values implements Named { private final PropertyNames names; private Grapheme_Cluster_Break_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Grapheme_Cluster_Break_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Grapheme_Cluster_Break_Values.class, this, shortName, otherNames); } @Override @@ -1026,8 +1003,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Grapheme_Cluster_Break_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Grapheme_Cluster_Break_Values.class); public static Grapheme_Cluster_Break_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1044,9 +1020,8 @@ public enum Hangul_Syllable_Type_Values implements Named { private final PropertyNames names; private Hangul_Syllable_Type_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Hangul_Syllable_Type_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Hangul_Syllable_Type_Values.class, this, shortName, otherNames); } @Override @@ -1059,8 +1034,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Hangul_Syllable_Type_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Hangul_Syllable_Type_Values.class); public static Hangul_Syllable_Type_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1073,9 +1047,8 @@ public enum Identifier_Status_Values implements Named { private final PropertyNames names; private Identifier_Status_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Identifier_Status_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Identifier_Status_Values.class, this, shortName, otherNames); } @Override @@ -1088,8 +1061,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Identifier_Status_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Identifier_Status_Values.class); public static Identifier_Status_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1113,9 +1085,8 @@ public enum Identifier_Type_Values implements Named { private final PropertyNames names; private Identifier_Type_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Identifier_Type_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Identifier_Type_Values.class, this, shortName, otherNames); } @Override @@ -1128,8 +1099,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Identifier_Type_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Identifier_Type_Values.class); public static Identifier_Type_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1143,9 +1113,8 @@ public enum Idn_2008_Values implements Named { private final PropertyNames names; private Idn_2008_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Idn_2008_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Idn_2008_Values.class, this, shortName, otherNames); } @Override @@ -1158,15 +1127,14 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Idn_2008_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Idn_2008_Values.class); public static Idn_2008_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Idn_Mapping + // Idn_Mapping public enum Idn_Status_Values implements Named { valid("v"), ignored("i"), @@ -1178,9 +1146,8 @@ public enum Idn_Status_Values implements Named { private final PropertyNames names; private Idn_Status_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Idn_Status_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Idn_Status_Values.class, this, shortName, otherNames); } @Override @@ -1193,8 +1160,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Idn_Status_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Idn_Status_Values.class); public static Idn_Status_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1210,9 +1176,8 @@ public enum IDNA2008_Category_Values implements Named { private final PropertyNames names; private IDNA2008_Category_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - IDNA2008_Category_Values.class, this, shortName, otherNames); + names = new PropertyNames( + IDNA2008_Category_Values.class, this, shortName, otherNames); } @Override @@ -1225,8 +1190,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(IDNA2008_Category_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(IDNA2008_Category_Values.class); public static IDNA2008_Category_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1241,9 +1205,8 @@ public enum Indic_Conjunct_Break_Values implements Named { private final PropertyNames names; private Indic_Conjunct_Break_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Indic_Conjunct_Break_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Indic_Conjunct_Break_Values.class, this, shortName, otherNames); } @Override @@ -1256,8 +1219,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Indic_Conjunct_Break_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Indic_Conjunct_Break_Values.class); public static Indic_Conjunct_Break_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1285,9 +1247,8 @@ public enum Indic_Positional_Category_Values implements Named { private final PropertyNames names; private Indic_Positional_Category_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Indic_Positional_Category_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Indic_Positional_Category_Values.class, this, shortName, otherNames); } @Override @@ -1300,8 +1261,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Indic_Positional_Category_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Indic_Positional_Category_Values.class); public static Indic_Positional_Category_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1350,9 +1310,8 @@ public enum Indic_Syllabic_Category_Values implements Named { private final PropertyNames names; private Indic_Syllabic_Category_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Indic_Syllabic_Category_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Indic_Syllabic_Category_Values.class, this, shortName, otherNames); } @Override @@ -1365,15 +1324,14 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Indic_Syllabic_Category_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Indic_Syllabic_Category_Values.class); public static Indic_Syllabic_Category_Values forName(String name) { return NAME_MATCHER.get(name); } } - // ISO_Comment + // ISO_Comment public enum Jamo_Short_Name_Values implements Named { A("A"), AE("AE"), @@ -1430,9 +1388,8 @@ public enum Jamo_Short_Name_Values implements Named { private final PropertyNames names; private Jamo_Short_Name_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Jamo_Short_Name_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Jamo_Short_Name_Values.class, this, shortName, otherNames); } @Override @@ -1445,8 +1402,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Jamo_Short_Name_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Jamo_Short_Name_Values.class); public static Jamo_Short_Name_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1587,9 +1543,8 @@ public enum Joining_Group_Values implements Named { private final PropertyNames names; private Joining_Group_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Joining_Group_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Joining_Group_Values.class, this, shortName, otherNames); } @Override @@ -1602,8 +1557,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Joining_Group_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Joining_Group_Values.class); public static Joining_Group_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1620,9 +1574,8 @@ public enum Joining_Type_Values implements Named { private final PropertyNames names; private Joining_Type_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Joining_Type_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Joining_Type_Values.class, this, shortName, otherNames); } @Override @@ -1635,36 +1588,35 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Joining_Type_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Joining_Type_Values.class); public static Joining_Type_Values forName(String name) { return NAME_MATCHER.get(name); } } - // kAccountingNumeric - // kAlternateHanYu - // kAlternateJEF - // kAlternateKangXi - // kAlternateMorohashi - // kAlternateTotalStrokes - // kBigFive - // kCangjie - // kCantonese - // kCCCII - // kCheungBauer - // kCheungBauerIndex - // kCihaiT - // kCNS1986 - // kCNS1992 - // kCompatibilityVariant - // kCowles - // kDaeJaweon - // kDefinition - // kEACC - // kEH_AltSeq - // kEH_Cat + // kAccountingNumeric + // kAlternateHanYu + // kAlternateJEF + // kAlternateKangXi + // kAlternateMorohashi + // kAlternateTotalStrokes + // kBigFive + // kCangjie + // kCantonese + // kCCCII + // kCheungBauer + // kCheungBauerIndex + // kCihaiT + // kCNS1986 + // kCNS1992 + // kCompatibilityVariant + // kCowles + // kDaeJaweon + // kDefinition + // kEACC + // kEH_AltSeq + // kEH_Cat public enum kEH_Core_Values implements Named { Core("C"), Legacy("L"), @@ -1672,9 +1624,8 @@ public enum kEH_Core_Values implements Named { private final PropertyNames names; private kEH_Core_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - kEH_Core_Values.class, this, shortName, otherNames); + names = new PropertyNames( + kEH_Core_Values.class, this, shortName, otherNames); } @Override @@ -1687,134 +1638,133 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(kEH_Core_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(kEH_Core_Values.class); public static kEH_Core_Values forName(String name) { return NAME_MATCHER.get(name); } } - // kEH_Desc - // kEH_Func - // kEH_FVal - // kEH_HG - // kEH_IFAO - // kEH_JSesh - // kEH_UniK - // kFanqie - // kFenn - // kFennIndex - // kFourCornerCode - // kFrequency - // kGB0 - // kGB1 - // kGB3 - // kGB5 - // kGB7 - // kGB8 - // kGradeLevel - // kGSR - // kHangul - // kHanYu - // kHanyuPinlu - // kHanyuPinyin - // kHDZRadBreak - // kHKGlyph - // kHKSCS - // kIBMJapan - // kIICore - // kIRG_GSource - // kIRG_HSource - // kIRG_JSource - // kIRG_KPSource - // kIRG_KSource - // kIRG_MSource - // kIRG_SSource - // kIRG_TSource - // kIRG_UKSource - // kIRG_USource - // kIRG_VSource - // kIRGDaeJaweon - // kIRGDaiKanwaZiten - // kIRGHanyuDaZidian - // kIRGKangXi - // kJa - // kJapanese - // kJapaneseKun - // kJapaneseOn - // kJHJ - // kJinmeiyoKanji - // kJis0 - // kJis1 - // kJIS0213 - // kJoyoKanji - // kJURC_NCReading - // kJURC_Numeric - // kJURC_RSUnicode - // kJURC_Src - // kKangXi - // kKarlgren - // kKorean - // kKoreanEducationHanja - // kKoreanName - // kKPS0 - // kKPS1 - // kKSC0 - // kKSC1 - // kLau - // kMainlandTelegraph - // kMandarin - // kMatthews - // kMeyerWempe - // kMojiJoho - // kMorohashi - // kNelson - // kNSHU_DubenSrc - // kNSHU_Reading - // kOtherNumeric - // kPhonetic - // kPrimaryNumeric - // kPseudoGB1 - // kRSAdobe_Japan1_6 - // kRSJapanese - // kRSKangXi - // kRSKanWa - // kRSKorean - // kRSMerged - // kRSUnicode - // kSBGY - // kSEAL_CCZSrc - // kSEAL_DYCSrc - // kSEAL_MCJK - // kSEAL_QJZSrc - // kSEAL_Rad - // kSEAL_THXSrc - // kSemanticVariant - // kSimplifiedVariant - // kSMSZD2003Index - // kSMSZD2003Readings - // kSpecializedSemanticVariant - // kSpoofingVariant - // kStrange - // kTaiwanTelegraph - // kTang - // kTayNumeric - // kTGH - // kTGHZ2013 - // kTGT_MergedSrc - // kTGT_Numeric - // kTGT_RSUnicode - // kTotalStrokes - // kTraditionalVariant - // kUnihanCore2020 - // kVietnamese - // kVietnameseNumeric - // kXerox - // kXHC1983 - // kZhuang - // kZhuangNumeric - // kZVariant + // kEH_Desc + // kEH_Func + // kEH_FVal + // kEH_HG + // kEH_IFAO + // kEH_JSesh + // kEH_UniK + // kFanqie + // kFenn + // kFennIndex + // kFourCornerCode + // kFrequency + // kGB0 + // kGB1 + // kGB3 + // kGB5 + // kGB7 + // kGB8 + // kGradeLevel + // kGSR + // kHangul + // kHanYu + // kHanyuPinlu + // kHanyuPinyin + // kHDZRadBreak + // kHKGlyph + // kHKSCS + // kIBMJapan + // kIICore + // kIRG_GSource + // kIRG_HSource + // kIRG_JSource + // kIRG_KPSource + // kIRG_KSource + // kIRG_MSource + // kIRG_SSource + // kIRG_TSource + // kIRG_UKSource + // kIRG_USource + // kIRG_VSource + // kIRGDaeJaweon + // kIRGDaiKanwaZiten + // kIRGHanyuDaZidian + // kIRGKangXi + // kJa + // kJapanese + // kJapaneseKun + // kJapaneseOn + // kJHJ + // kJinmeiyoKanji + // kJis0 + // kJis1 + // kJIS0213 + // kJoyoKanji + // kJURC_NCReading + // kJURC_Numeric + // kJURC_RSUnicode + // kJURC_Src + // kKangXi + // kKarlgren + // kKorean + // kKoreanEducationHanja + // kKoreanName + // kKPS0 + // kKPS1 + // kKSC0 + // kKSC1 + // kLau + // kMainlandTelegraph + // kMandarin + // kMatthews + // kMeyerWempe + // kMojiJoho + // kMorohashi + // kNelson + // kNSHU_DubenSrc + // kNSHU_Reading + // kOtherNumeric + // kPhonetic + // kPrimaryNumeric + // kPseudoGB1 + // kRSAdobe_Japan1_6 + // kRSJapanese + // kRSKangXi + // kRSKanWa + // kRSKorean + // kRSMerged + // kRSUnicode + // kSBGY + // kSEAL_CCZSrc + // kSEAL_DYCSrc + // kSEAL_MCJK + // kSEAL_QJZSrc + // kSEAL_Rad + // kSEAL_THXSrc + // kSemanticVariant + // kSimplifiedVariant + // kSMSZD2003Index + // kSMSZD2003Readings + // kSpecializedSemanticVariant + // kSpoofingVariant + // kStrange + // kTaiwanTelegraph + // kTang + // kTayNumeric + // kTGH + // kTGHZ2013 + // kTGT_MergedSrc + // kTGT_Numeric + // kTGT_RSUnicode + // kTotalStrokes + // kTraditionalVariant + // kUnihanCore2020 + // kVietnamese + // kVietnameseNumeric + // kXerox + // kXHC1983 + // kZhuang + // kZhuangNumeric + // kZVariant public enum Line_Break_Values implements Named { Ambiguous("AI"), Aksara("AK"), @@ -1868,9 +1818,8 @@ public enum Line_Break_Values implements Named { private final PropertyNames names; private Line_Break_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Line_Break_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Line_Break_Values.class, this, shortName, otherNames); } @Override @@ -1883,15 +1832,14 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Line_Break_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Line_Break_Values.class); public static Line_Break_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Link_Bracket + // Link_Bracket public enum Link_Term_Values implements Named { Include("Include"), Hard("Hard"), @@ -1901,9 +1849,8 @@ public enum Link_Term_Values implements Named { private final PropertyNames names; private Link_Term_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Link_Term_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Link_Term_Values.class, this, shortName, otherNames); } @Override @@ -1916,15 +1863,14 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Link_Term_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Link_Term_Values.class); public static Link_Term_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Lowercase_Mapping + // Lowercase_Mapping public enum Math_Class_Values implements Named { None("None"), Normal("N"), @@ -1946,9 +1892,8 @@ public enum Math_Class_Values implements Named { private final PropertyNames names; private Math_Class_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Math_Class_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Math_Class_Values.class, this, shortName, otherNames); } @Override @@ -1961,8 +1906,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Math_Class_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Math_Class_Values.class); public static Math_Class_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1989,9 +1933,8 @@ public enum Math_Class_Ex_Values implements Named { private final PropertyNames names; private Math_Class_Ex_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Math_Class_Ex_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Math_Class_Ex_Values.class, this, shortName, otherNames); } @Override @@ -2004,26 +1947,25 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Math_Class_Ex_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Math_Class_Ex_Values.class); public static Math_Class_Ex_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Math_Descriptive_Comments - // Math_Entity_Name - // Math_Entity_Set - // Name - // Name_Alias - // Named_Sequences - // Named_Sequences_Prov - // Names_List_Alias - // Names_List_Comment - // Names_List_Cross_Ref - // Names_List_Subheader - // Names_List_Subheader_Notice + // Math_Descriptive_Comments + // Math_Entity_Name + // Math_Entity_Set + // Name + // Name_Alias + // Named_Sequences + // Named_Sequences_Prov + // Names_List_Alias + // Names_List_Comment + // Names_List_Cross_Ref + // Names_List_Subheader + // Names_List_Subheader_Notice public enum NFC_Quick_Check_Values implements Named { Maybe("M"), No("N"), @@ -2031,9 +1973,8 @@ public enum NFC_Quick_Check_Values implements Named { private final PropertyNames names; private NFC_Quick_Check_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - NFC_Quick_Check_Values.class, this, shortName, otherNames); + names = new PropertyNames( + NFC_Quick_Check_Values.class, this, shortName, otherNames); } @Override @@ -2046,8 +1987,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(NFC_Quick_Check_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(NFC_Quick_Check_Values.class); public static NFC_Quick_Check_Values forName(String name) { return NAME_MATCHER.get(name); @@ -2060,9 +2000,8 @@ public enum NFD_Quick_Check_Values implements Named { private final PropertyNames names; private NFD_Quick_Check_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - NFD_Quick_Check_Values.class, this, shortName, otherNames); + names = new PropertyNames( + NFD_Quick_Check_Values.class, this, shortName, otherNames); } @Override @@ -2075,15 +2014,14 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(NFD_Quick_Check_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(NFD_Quick_Check_Values.class); public static NFD_Quick_Check_Values forName(String name) { return NAME_MATCHER.get(name); } } - // NFKC_Casefold + // NFKC_Casefold public enum NFKC_Quick_Check_Values implements Named { Maybe("M"), No("N"), @@ -2091,9 +2029,8 @@ public enum NFKC_Quick_Check_Values implements Named { private final PropertyNames names; private NFKC_Quick_Check_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - NFKC_Quick_Check_Values.class, this, shortName, otherNames); + names = new PropertyNames( + NFKC_Quick_Check_Values.class, this, shortName, otherNames); } @Override @@ -2106,24 +2043,22 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(NFKC_Quick_Check_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(NFKC_Quick_Check_Values.class); public static NFKC_Quick_Check_Values forName(String name) { return NAME_MATCHER.get(name); } } - // NFKC_Simple_Casefold + // NFKC_Simple_Casefold public enum NFKD_Quick_Check_Values implements Named { No("N"), Yes("Y"); private final PropertyNames names; private NFKD_Quick_Check_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - NFKD_Quick_Check_Values.class, this, shortName, otherNames); + names = new PropertyNames( + NFKD_Quick_Check_Values.class, this, shortName, otherNames); } @Override @@ -2136,18 +2071,17 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(NFKD_Quick_Check_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(NFKD_Quick_Check_Values.class); public static NFKD_Quick_Check_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Non_Unihan_Numeric_Value - // normalization_correction_corrected - // normalization_correction_original - // normalization_correction_version + // Non_Unihan_Numeric_Value + // normalization_correction_corrected + // normalization_correction_original + // normalization_correction_version public enum Numeric_Type_Values implements Named { Decimal("De"), Digit("Di"), @@ -2156,9 +2090,8 @@ public enum Numeric_Type_Values implements Named { private final PropertyNames names; private Numeric_Type_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Numeric_Type_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Numeric_Type_Values.class, this, shortName, otherNames); } @Override @@ -2171,15 +2104,14 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Numeric_Type_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Numeric_Type_Values.class); public static Numeric_Type_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Numeric_Value + // Numeric_Value public enum Other_Joining_Type_Values implements Named { Join_Causing("C"), Dual_Joining("D"), @@ -2191,9 +2123,8 @@ public enum Other_Joining_Type_Values implements Named { private final PropertyNames names; private Other_Joining_Type_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Other_Joining_Type_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Other_Joining_Type_Values.class, this, shortName, otherNames); } @Override @@ -2206,8 +2137,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Other_Joining_Type_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Other_Joining_Type_Values.class); public static Other_Joining_Type_Values forName(String name) { return NAME_MATCHER.get(name); @@ -2224,9 +2154,8 @@ public enum RGI_Emoji_Qualification_Values implements Named { private final PropertyNames names; private RGI_Emoji_Qualification_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - RGI_Emoji_Qualification_Values.class, this, shortName, otherNames); + names = new PropertyNames( + RGI_Emoji_Qualification_Values.class, this, shortName, otherNames); } @Override @@ -2239,8 +2168,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(RGI_Emoji_Qualification_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(RGI_Emoji_Qualification_Values.class); public static RGI_Emoji_Qualification_Values forName(String name) { return NAME_MATCHER.get(name); @@ -2438,9 +2366,8 @@ public enum Script_Values implements Named { private final PropertyNames names; private Script_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Script_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Script_Values.class, this, shortName, otherNames); } @Override @@ -2453,15 +2380,14 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Script_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Script_Values.class); public static Script_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Script_Extensions + // Script_Extensions public enum Sentence_Break_Values implements Named { ATerm("AT"), Close("CL"), @@ -2481,9 +2407,8 @@ public enum Sentence_Break_Values implements Named { private final PropertyNames names; private Sentence_Break_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Sentence_Break_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Sentence_Break_Values.class, this, shortName, otherNames); } @Override @@ -2496,22 +2421,21 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Sentence_Break_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Sentence_Break_Values.class); public static Sentence_Break_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Simple_Case_Folding - // Simple_Lowercase_Mapping - // Simple_Titlecase_Mapping - // Simple_Uppercase_Mapping - // Standardized_Variant - // Titlecase_Mapping - // Unicode_1_Name - // Uppercase_Mapping + // Simple_Case_Folding + // Simple_Lowercase_Mapping + // Simple_Titlecase_Mapping + // Simple_Uppercase_Mapping + // Standardized_Variant + // Titlecase_Mapping + // Unicode_1_Name + // Uppercase_Mapping public enum Vertical_Orientation_Values implements Named { Rotated("R"), Transformed_Rotated("Tr"), @@ -2520,9 +2444,8 @@ public enum Vertical_Orientation_Values implements Named { private final PropertyNames names; private Vertical_Orientation_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Vertical_Orientation_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Vertical_Orientation_Values.class, this, shortName, otherNames); } @Override @@ -2535,8 +2458,7 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Vertical_Orientation_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Vertical_Orientation_Values.class); public static Vertical_Orientation_Values forName(String name) { return NAME_MATCHER.get(name); @@ -2570,9 +2492,8 @@ public enum Word_Break_Values implements Named { private final PropertyNames names; private Word_Break_Values(String shortName, String... otherNames) { - names = - new PropertyNames( - Word_Break_Values.class, this, shortName, otherNames); + names = new PropertyNames( + Word_Break_Values.class, this, shortName, otherNames); } @Override @@ -2585,11 +2506,11 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = - PropertyNames.getNameToEnums(Word_Break_Values.class); + private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Word_Break_Values.class); public static Word_Break_Values forName(String name) { return NAME_MATCHER.get(name); } } + } From f5ec085f848cc5490971b851c012fca2c7ed660e Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Thu, 5 Feb 2026 18:00:30 -0800 Subject: [PATCH 15/20] Ran spotless --- .../java/org/unicode/props/UcdProperty.java | 1218 ++++++++++++++--- .../org/unicode/props/UcdPropertyValues.java | 709 +++++----- 2 files changed, 1389 insertions(+), 538 deletions(-) diff --git a/unicodetools/src/main/java/org/unicode/props/UcdProperty.java b/unicodetools/src/main/java/org/unicode/props/UcdProperty.java index 1fb447fab..f55a365ac 100644 --- a/unicodetools/src/main/java/org/unicode/props/UcdProperty.java +++ b/unicodetools/src/main/java/org/unicode/props/UcdProperty.java @@ -50,28 +50,66 @@ */ public enum UcdProperty { - // Numeric - Non_Unihan_Numeric_Value(PropertyType.Numeric, DerivedPropertyStatus.UCDNonProperty, "Non_Unihan_Numeric_Value"), + // Numeric + Non_Unihan_Numeric_Value( + PropertyType.Numeric, DerivedPropertyStatus.UCDNonProperty, "Non_Unihan_Numeric_Value"), Numeric_Value(PropertyType.Numeric, DerivedPropertyStatus.Approved, "nv"), - kAccountingNumeric(PropertyType.Numeric, DerivedPropertyStatus.Approved, "cjkAccountingNumeric"), - kOtherNumeric(PropertyType.Numeric, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "cjkOtherNumeric"), - kPrimaryNumeric(PropertyType.Numeric, DerivedPropertyStatus.Approved, null, ValueCardinality.Ordered, "cjkPrimaryNumeric"), + kAccountingNumeric( + PropertyType.Numeric, DerivedPropertyStatus.Approved, "cjkAccountingNumeric"), + kOtherNumeric( + PropertyType.Numeric, + DerivedPropertyStatus.Approved, + null, + ValueCardinality.Unordered, + "cjkOtherNumeric"), + kPrimaryNumeric( + PropertyType.Numeric, + DerivedPropertyStatus.Approved, + null, + ValueCardinality.Ordered, + "cjkPrimaryNumeric"), kTGT_Numeric(PropertyType.Numeric, DerivedPropertyStatus.Provisional, "kTGT_Numeric"), - kTayNumeric(PropertyType.Numeric, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTayNumeric"), - kVietnameseNumeric(PropertyType.Numeric, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkVietnameseNumeric"), - kZhuangNumeric(PropertyType.Numeric, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkZhuangNumeric"), + kTayNumeric( + PropertyType.Numeric, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkTayNumeric"), + kVietnameseNumeric( + PropertyType.Numeric, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkVietnameseNumeric"), + kZhuangNumeric( + PropertyType.Numeric, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkZhuangNumeric"), - // String + // String Bidi_Mirroring_Glyph(PropertyType.String, DerivedPropertyStatus.Approved, "bmg"), Bidi_Paired_Bracket(PropertyType.String, DerivedPropertyStatus.Approved, "bpb"), Case_Folding(PropertyType.String, DerivedPropertyStatus.Approved, "cf"), - Confusable_MA(PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "ConfMA", "Confusable"), + Confusable_MA( + PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "ConfMA", "Confusable"), Confusable_ML(PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "ConfML"), Confusable_SA(PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "ConfSA"), Confusable_SL(PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "ConfSL"), Decomposition_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "dm"), - Do_Not_Emit_Dispreferred(PropertyType.String, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Unordered, "Do_Not_Emit_Dispreferred"), - Do_Not_Emit_Preferred(PropertyType.String, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Unordered, "Do_Not_Emit_Preferred"), + Do_Not_Emit_Dispreferred( + PropertyType.String, + DerivedPropertyStatus.UCDNonProperty, + null, + ValueCardinality.Unordered, + "Do_Not_Emit_Dispreferred"), + Do_Not_Emit_Preferred( + PropertyType.String, + DerivedPropertyStatus.UCDNonProperty, + null, + ValueCardinality.Unordered, + "Do_Not_Emit_Preferred"), Equivalent_Unified_Ideograph(PropertyType.String, DerivedPropertyStatus.Approved, "EqUIdeo"), FC_NFKC_Closure(PropertyType.String, DerivedPropertyStatus.Approved, "FC_NFKC"), Idn_Mapping(PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "idnm"), @@ -79,96 +117,307 @@ public enum UcdProperty { Lowercase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "lc"), NFKC_Casefold(PropertyType.String, DerivedPropertyStatus.Approved, "NFKC_CF"), NFKC_Simple_Casefold(PropertyType.String, DerivedPropertyStatus.Approved, "NFKC_SCF"), - Names_List_Cross_Ref(PropertyType.String, DerivedPropertyStatus.UCDNonProperty, "Names_List_Cross_Ref"), + Names_List_Cross_Ref( + PropertyType.String, DerivedPropertyStatus.UCDNonProperty, "Names_List_Cross_Ref"), Simple_Case_Folding(PropertyType.String, DerivedPropertyStatus.Approved, "scf", "sfc"), Simple_Lowercase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "slc"), Simple_Titlecase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "stc"), Simple_Uppercase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "suc"), Titlecase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "tc"), Uppercase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "uc"), - kCompatibilityVariant(PropertyType.String, DerivedPropertyStatus.Approved, "cjkCompatibilityVariant"), + kCompatibilityVariant( + PropertyType.String, DerivedPropertyStatus.Approved, "cjkCompatibilityVariant"), kEH_AltSeq(PropertyType.String, DerivedPropertyStatus.Provisional, "kEH_AltSeq"), - kSEAL_MCJK(PropertyType.String, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "kSEAL_MCJK"), - kSimplifiedVariant(PropertyType.String, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSimplifiedVariant"), - kSpoofingVariant(PropertyType.String, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSpoofingVariant"), - kTraditionalVariant(PropertyType.String, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTraditionalVariant"), - normalization_correction_corrected(PropertyType.String, DerivedPropertyStatus.UCDNonProperty, "normalization_correction_corrected"), - normalization_correction_original(PropertyType.String, DerivedPropertyStatus.UCDNonProperty, "normalization_correction_original"), + kSEAL_MCJK( + PropertyType.String, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "kSEAL_MCJK"), + kSimplifiedVariant( + PropertyType.String, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkSimplifiedVariant"), + kSpoofingVariant( + PropertyType.String, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkSpoofingVariant"), + kTraditionalVariant( + PropertyType.String, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkTraditionalVariant"), + normalization_correction_corrected( + PropertyType.String, + DerivedPropertyStatus.UCDNonProperty, + "normalization_correction_corrected"), + normalization_correction_original( + PropertyType.String, + DerivedPropertyStatus.UCDNonProperty, + "normalization_correction_original"), - // Miscellaneous - Arabic_Shaping_Schematic_Name(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "Arabic_Shaping_Schematic_Name"), - CJK_Radical(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Ordered, "CJKR"), + // Miscellaneous + Arabic_Shaping_Schematic_Name( + PropertyType.Miscellaneous, + DerivedPropertyStatus.UCDNonProperty, + "Arabic_Shaping_Schematic_Name"), + CJK_Radical( + PropertyType.Miscellaneous, + DerivedPropertyStatus.UCDNonProperty, + null, + ValueCardinality.Ordered, + "CJKR"), Emoji_DCM(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "EDCM"), Emoji_KDDI(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "EKDDI"), Emoji_SB(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "ESB"), ISO_Comment(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "isc"), Jamo_Short_Name(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "JSN"), - Math_Descriptive_Comments(PropertyType.Miscellaneous, DerivedPropertyStatus.NonUCDNonProperty, null, ValueCardinality.Unordered, "Math_Descriptive_Comments"), - Math_Entity_Name(PropertyType.Miscellaneous, DerivedPropertyStatus.NonUCDNonProperty, null, ValueCardinality.Unordered, "Math_Entity_Name"), - Math_Entity_Set(PropertyType.Miscellaneous, DerivedPropertyStatus.NonUCDNonProperty, null, ValueCardinality.Unordered, "Math_Entity_Set"), + Math_Descriptive_Comments( + PropertyType.Miscellaneous, + DerivedPropertyStatus.NonUCDNonProperty, + null, + ValueCardinality.Unordered, + "Math_Descriptive_Comments"), + Math_Entity_Name( + PropertyType.Miscellaneous, + DerivedPropertyStatus.NonUCDNonProperty, + null, + ValueCardinality.Unordered, + "Math_Entity_Name"), + Math_Entity_Set( + PropertyType.Miscellaneous, + DerivedPropertyStatus.NonUCDNonProperty, + null, + ValueCardinality.Unordered, + "Math_Entity_Set"), Name(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "na"), - Name_Alias(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "Name_Alias"), + Name_Alias( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Approved, + null, + ValueCardinality.Unordered, + "Name_Alias"), Named_Sequences(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "NS"), Named_Sequences_Prov(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "NSP"), - Names_List_Alias(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "Names_List_Alias"), - Names_List_Comment(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "Names_List_Comment"), - Names_List_Subheader(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Unordered, "Names_List_Subheader", "subhead"), - Names_List_Subheader_Notice(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Unordered, "Names_List_Subheader_Notice"), - Standardized_Variant(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, null, ValueCardinality.Unordered, "SV"), + Names_List_Alias( + PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "Names_List_Alias"), + Names_List_Comment( + PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "Names_List_Comment"), + Names_List_Subheader( + PropertyType.Miscellaneous, + DerivedPropertyStatus.UCDNonProperty, + null, + ValueCardinality.Unordered, + "Names_List_Subheader", + "subhead"), + Names_List_Subheader_Notice( + PropertyType.Miscellaneous, + DerivedPropertyStatus.UCDNonProperty, + null, + ValueCardinality.Unordered, + "Names_List_Subheader_Notice"), + Standardized_Variant( + PropertyType.Miscellaneous, + DerivedPropertyStatus.UCDNonProperty, + null, + ValueCardinality.Unordered, + "SV"), Unicode_1_Name(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "na1"), - emoji_variation_sequence(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "emoji_variation_sequence"), - kAlternateHanYu(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateHanYu"), + emoji_variation_sequence( + PropertyType.Miscellaneous, + DerivedPropertyStatus.UCDNonProperty, + "emoji_variation_sequence"), + kAlternateHanYu( + PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateHanYu"), kAlternateJEF(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateJEF"), - kAlternateKangXi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateKangXi"), - kAlternateMorohashi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateMorohashi"), - kAlternateTotalStrokes(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkAlternateTotalStrokes"), + kAlternateKangXi( + PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateKangXi"), + kAlternateMorohashi( + PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkAlternateMorohashi"), + kAlternateTotalStrokes( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkAlternateTotalStrokes"), kBigFive(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkBigFive"), kCCCII(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkCCCII"), kCNS1986(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkCNS1986"), kCNS1992(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkCNS1992"), kCangjie(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkCangjie"), - kCantonese(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkCantonese"), + kCantonese( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkCantonese"), kCheungBauer(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkCheungBauer"), - kCheungBauerIndex(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkCheungBauerIndex"), - kCihaiT(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkCihaiT"), - kCowles(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkCowles"), + kCheungBauerIndex( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkCheungBauerIndex"), + kCihaiT( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkCihaiT"), + kCowles( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkCowles"), kDaeJaweon(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkDaeJaweon"), kDefinition(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkDefinition"), kEACC(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkEACC"), kEH_Cat(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kEH_Cat"), kEH_Desc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kEH_Desc"), - kEH_FVal(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "kEH_FVal"), - kEH_Func(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "kEH_Func"), - kEH_HG(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "kEH_HG"), - kEH_IFAO(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "kEH_IFAO"), - kEH_JSesh(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "kEH_JSesh"), + kEH_FVal( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "kEH_FVal"), + kEH_Func( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "kEH_Func"), + kEH_HG( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Approved, + null, + ValueCardinality.Unordered, + "kEH_HG"), + kEH_IFAO( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Approved, + null, + ValueCardinality.Unordered, + "kEH_IFAO"), + kEH_JSesh( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Approved, + null, + ValueCardinality.Unordered, + "kEH_JSesh"), kEH_UniK(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kEH_UniK"), - kFanqie(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkFanqie"), - kFenn(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkFenn"), - kFennIndex(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkFennIndex"), - kFourCornerCode(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkFourCornerCode"), + kFanqie( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkFanqie"), + kFenn( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkFenn"), + kFennIndex( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkFennIndex"), + kFourCornerCode( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkFourCornerCode"), kFrequency(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkFrequency"), kGB0(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGB0"), kGB1(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGB1"), kGB3(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGB3"), - kGB5(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkGB5"), + kGB5( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkGB5"), kGB7(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGB7"), kGB8(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGB8"), - kGSR(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkGSR"), + kGSR( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkGSR"), kGradeLevel(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkGradeLevel"), kHDZRadBreak(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkHDZRadBreak"), - kHKGlyph(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkHKGlyph"), + kHKGlyph( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkHKGlyph"), kHKSCS(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkHKSCS"), - kHanYu(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkHanYu"), - kHangul(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkHangul"), - kHanyuPinlu(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkHanyuPinlu"), - kHanyuPinyin(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkHanyuPinyin"), - kIBMJapan(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkIBMJapan"), - kIICore(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Unordered, "cjkIICore"), - kIRGDaeJaweon(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkIRGDaeJaweon"), - kIRGDaiKanwaZiten(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkIRGDaiKanwaZiten"), - kIRGHanyuDaZidian(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkIRGHanyuDaZidian"), - kIRGKangXi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkIRGKangXi"), + kHanYu( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkHanYu"), + kHangul( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkHangul"), + kHanyuPinlu( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkHanyuPinlu"), + kHanyuPinyin( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkHanyuPinyin"), + kIBMJapan( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkIBMJapan"), + kIICore( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Approved, + null, + ValueCardinality.Unordered, + "cjkIICore"), + kIRGDaeJaweon( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkIRGDaeJaweon"), + kIRGDaiKanwaZiten( + PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkIRGDaiKanwaZiten"), + kIRGHanyuDaZidian( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkIRGHanyuDaZidian"), + kIRGKangXi( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkIRGKangXi"), kIRG_GSource(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkIRG_GSource"), kIRG_HSource(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkIRG_HSource"), kIRG_JSource(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkIRG_JSource"), @@ -181,229 +430,752 @@ public enum UcdProperty { kIRG_USource(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkIRG_USource"), kIRG_VSource(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkIRG_VSource"), kJHJ(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkJHJ"), - kJIS0213(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJIS0213"), - kJURC_NCReading(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kJURC_NCReading"), + kJIS0213( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkJIS0213"), + kJURC_NCReading( + PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kJURC_NCReading"), kJURC_Numeric(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kJURC_Numeric"), - kJURC_RSUnicode(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kJURC_RSUnicode"), + kJURC_RSUnicode( + PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kJURC_RSUnicode"), kJURC_Src(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kJURC_Src"), kJa(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkJa"), - kJapanese(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJapanese"), - kJapaneseKun(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJapaneseKun"), - kJapaneseOn(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJapaneseOn"), - kJinmeiyoKanji(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJinmeiyoKanji"), - kJis0(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJis0"), - kJis1(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJis1"), - kJoyoKanji(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkJoyoKanji"), + kJapanese( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkJapanese"), + kJapaneseKun( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkJapaneseKun"), + kJapaneseOn( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkJapaneseOn"), + kJinmeiyoKanji( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkJinmeiyoKanji"), + kJis0( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkJis0"), + kJis1( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkJis1"), + kJoyoKanji( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkJoyoKanji"), kKPS0(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkKPS0"), kKPS1(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkKPS1"), kKSC0(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkKSC0"), kKSC1(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkKSC1"), - kKangXi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkKangXi"), - kKarlgren(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkKarlgren"), - kKorean(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkKorean"), - kKoreanEducationHanja(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkKoreanEducationHanja"), - kKoreanName(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkKoreanName"), - kLau(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkLau"), - kMainlandTelegraph(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkMainlandTelegraph"), - kMandarin(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Ordered, "cjkMandarin"), - kMatthews(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkMatthews"), - kMeyerWempe(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkMeyerWempe"), - kMojiJoho(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkMojiJoho"), - kMorohashi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkMorohashi"), - kNSHU_DubenSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kNSHU_DubenSrc", new String[]{}, new String[]{"kSrc_NushuDuben", }), - kNSHU_Reading(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kNSHU_Reading", "kReading"), - kNelson(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkNelson"), - kPhonetic(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkPhonetic"), + kKangXi( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkKangXi"), + kKarlgren( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkKarlgren"), + kKorean( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkKorean"), + kKoreanEducationHanja( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkKoreanEducationHanja"), + kKoreanName( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkKoreanName"), + kLau( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkLau"), + kMainlandTelegraph( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkMainlandTelegraph"), + kMandarin( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Approved, + null, + ValueCardinality.Ordered, + "cjkMandarin"), + kMatthews( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkMatthews"), + kMeyerWempe( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkMeyerWempe"), + kMojiJoho( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkMojiJoho"), + kMorohashi( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkMorohashi"), + kNSHU_DubenSrc( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Approved, + "kNSHU_DubenSrc", + new String[] {}, + new String[] { + "kSrc_NushuDuben", + }), + kNSHU_Reading( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + "kNSHU_Reading", + "kReading"), + kNelson( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkNelson"), + kPhonetic( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkPhonetic"), kPseudoGB1(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkPseudoGB1"), - kRSAdobe_Japan1_6(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkRSAdobe_Japan1_6"), + kRSAdobe_Japan1_6( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkRSAdobe_Japan1_6"), kRSJapanese(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkRSJapanese"), kRSKanWa(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkRSKanWa"), kRSKangXi(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkRSKangXi"), kRSKorean(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkRSKorean"), kRSMerged(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "cjkRSMerged"), - kRSUnicode(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Ordered, "cjkRSUnicode", "Unicode_Radical_Stroke", "URS"), - kSBGY(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSBGY"), + kRSUnicode( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Approved, + null, + ValueCardinality.Ordered, + "cjkRSUnicode", + "Unicode_Radical_Stroke", + "URS"), + kSBGY( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkSBGY"), kSEAL_CCZSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kSEAL_CCZSrc"), kSEAL_DYCSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kSEAL_DYCSrc"), kSEAL_QJZSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kSEAL_QJZSrc"), - kSEAL_Rad(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "kSEAL_Rad"), + kSEAL_Rad( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "kSEAL_Rad"), kSEAL_THXSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kSEAL_THXSrc"), - kSMSZD2003Index(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSMSZD2003Index"), - kSMSZD2003Readings(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSMSZD2003Readings"), - kSemanticVariant(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSemanticVariant"), - kSpecializedSemanticVariant(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkSpecializedSemanticVariant"), - kStrange(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkStrange"), - kTGH(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTGH"), - kTGHZ2013(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTGHZ2013"), + kSMSZD2003Index( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkSMSZD2003Index"), + kSMSZD2003Readings( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkSMSZD2003Readings"), + kSemanticVariant( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkSemanticVariant"), + kSpecializedSemanticVariant( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkSpecializedSemanticVariant"), + kStrange( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkStrange"), + kTGH( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkTGH"), + kTGHZ2013( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkTGHZ2013"), kTGT_MergedSrc(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "kTGT_MergedSrc"), - kTGT_RSUnicode(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, "kTGT_RSUnicode", "kRSTUnicode"), - kTaiwanTelegraph(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTaiwanTelegraph"), - kTang(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkTang"), - kTotalStrokes(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, null, ValueCardinality.Ordered, "cjkTotalStrokes"), - kUnihanCore2020(PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkUnihanCore2020"), - kVietnamese(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkVietnamese"), - kXHC1983(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkXHC1983"), - kXerox(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkXerox"), - kZVariant(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkZVariant"), - kZhuang(PropertyType.Miscellaneous, DerivedPropertyStatus.Provisional, null, ValueCardinality.Unordered, "cjkZhuang"), - normalization_correction_version(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "normalization_correction_version"), + kTGT_RSUnicode( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + "kTGT_RSUnicode", + "kRSTUnicode"), + kTaiwanTelegraph( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkTaiwanTelegraph"), + kTang( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkTang"), + kTotalStrokes( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Approved, + null, + ValueCardinality.Ordered, + "cjkTotalStrokes"), + kUnihanCore2020( + PropertyType.Miscellaneous, DerivedPropertyStatus.Approved, "cjkUnihanCore2020"), + kVietnamese( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkVietnamese"), + kXHC1983( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkXHC1983"), + kXerox( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkXerox"), + kZVariant( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkZVariant"), + kZhuang( + PropertyType.Miscellaneous, + DerivedPropertyStatus.Provisional, + null, + ValueCardinality.Unordered, + "cjkZhuang"), + normalization_correction_version( + PropertyType.Miscellaneous, + DerivedPropertyStatus.UCDNonProperty, + "normalization_correction_version"), - // Catalog + // Catalog Age(PropertyType.Catalog, DerivedPropertyStatus.Approved, Age_Values.class, null, "age"), Block(PropertyType.Catalog, DerivedPropertyStatus.Approved, Block_Values.class, null, "blk"), Script(PropertyType.Catalog, DerivedPropertyStatus.Approved, Script_Values.class, null, "sc"), - Script_Extensions(PropertyType.Catalog, DerivedPropertyStatus.Approved, Script_Values.class, ValueCardinality.Unordered, "scx"), + Script_Extensions( + PropertyType.Catalog, + DerivedPropertyStatus.Approved, + Script_Values.class, + ValueCardinality.Unordered, + "scx"), - // Enumerated - Bidi_Class(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Bidi_Class_Values.class, null, "bc"), - Bidi_Paired_Bracket_Type(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Bidi_Paired_Bracket_Type_Values.class, null, "bpt"), - Canonical_Combining_Class(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Canonical_Combining_Class_Values.class, null, "ccc"), - Decomposition_Type(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Decomposition_Type_Values.class, null, "dt"), - Do_Not_Emit_Dispreferred_Type(PropertyType.Enumerated, DerivedPropertyStatus.UCDNonProperty, Do_Not_Emit_Dispreferred_Type_Values.class, ValueCardinality.Unordered, "Do_Not_Emit_Dispreferred_Type"), - Do_Not_Emit_Type(PropertyType.Enumerated, DerivedPropertyStatus.UCDNonProperty, Do_Not_Emit_Type_Values.class, null, "Do_Not_Emit_Type"), - East_Asian_Width(PropertyType.Enumerated, DerivedPropertyStatus.Approved, East_Asian_Width_Values.class, null, "ea"), - General_Category(PropertyType.Enumerated, DerivedPropertyStatus.Approved, General_Category_Values.class, null, "gc"), - Grapheme_Cluster_Break(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Grapheme_Cluster_Break_Values.class, null, "GCB"), - Hangul_Syllable_Type(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Hangul_Syllable_Type_Values.class, null, "hst"), - IDNA2008_Category(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, IDNA2008_Category_Values.class, null, "IDNA2008_Category"), - Identifier_Status(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, Identifier_Status_Values.class, null, "ID_Status"), - Identifier_Type(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, Identifier_Type_Values.class, ValueCardinality.Unordered, "ID_Type"), - Idn_2008(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDNonProperty, Idn_2008_Values.class, null, "idn8"), - Idn_Status(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDNonProperty, Idn_Status_Values.class, null, "idns"), - Indic_Conjunct_Break(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Indic_Conjunct_Break_Values.class, null, "InCB"), - Indic_Positional_Category(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Indic_Positional_Category_Values.class, null, "InPC"), - Indic_Syllabic_Category(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Indic_Syllabic_Category_Values.class, null, "InSC"), - Joining_Group(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Joining_Group_Values.class, null, "jg"), - Joining_Type(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Joining_Type_Values.class, null, "jt"), - Line_Break(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Line_Break_Values.class, null, "lb"), - Link_Term(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, Link_Term_Values.class, null, "Link_Term"), - Math_Class(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, Math_Class_Values.class, ValueCardinality.Ordered, "Math_Class"), - Math_Class_Ex(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDNonProperty, Math_Class_Ex_Values.class, ValueCardinality.Ordered, "Math_Class_Ex"), - NFC_Quick_Check(PropertyType.Enumerated, DerivedPropertyStatus.Approved, NFC_Quick_Check_Values.class, null, "NFC_QC"), - NFD_Quick_Check(PropertyType.Enumerated, DerivedPropertyStatus.Approved, NFD_Quick_Check_Values.class, null, "NFD_QC"), - NFKC_Quick_Check(PropertyType.Enumerated, DerivedPropertyStatus.Approved, NFKC_Quick_Check_Values.class, null, "NFKC_QC"), - NFKD_Quick_Check(PropertyType.Enumerated, DerivedPropertyStatus.Approved, NFKD_Quick_Check_Values.class, null, "NFKD_QC"), - Numeric_Type(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Numeric_Type_Values.class, null, "nt"), - Other_Joining_Type(PropertyType.Enumerated, DerivedPropertyStatus.UCDNonProperty, Other_Joining_Type_Values.class, null, "Other_Joining_Type"), - RGI_Emoji_Qualification(PropertyType.Enumerated, DerivedPropertyStatus.NonUCDProperty, RGI_Emoji_Qualification_Values.class, null, "RGI_Emoji_Qualification"), - Sentence_Break(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Sentence_Break_Values.class, null, "SB"), - Vertical_Orientation(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Vertical_Orientation_Values.class, null, "vo"), - Word_Break(PropertyType.Enumerated, DerivedPropertyStatus.Approved, Word_Break_Values.class, null, "WB"), - kEH_Core(PropertyType.Enumerated, DerivedPropertyStatus.Provisional, kEH_Core_Values.class, null, "kEH_Core"), + // Enumerated + Bidi_Class( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Bidi_Class_Values.class, + null, + "bc"), + Bidi_Paired_Bracket_Type( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Bidi_Paired_Bracket_Type_Values.class, + null, + "bpt"), + Canonical_Combining_Class( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Canonical_Combining_Class_Values.class, + null, + "ccc"), + Decomposition_Type( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Decomposition_Type_Values.class, + null, + "dt"), + Do_Not_Emit_Dispreferred_Type( + PropertyType.Enumerated, + DerivedPropertyStatus.UCDNonProperty, + Do_Not_Emit_Dispreferred_Type_Values.class, + ValueCardinality.Unordered, + "Do_Not_Emit_Dispreferred_Type"), + Do_Not_Emit_Type( + PropertyType.Enumerated, + DerivedPropertyStatus.UCDNonProperty, + Do_Not_Emit_Type_Values.class, + null, + "Do_Not_Emit_Type"), + East_Asian_Width( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + East_Asian_Width_Values.class, + null, + "ea"), + General_Category( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + General_Category_Values.class, + null, + "gc"), + Grapheme_Cluster_Break( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Grapheme_Cluster_Break_Values.class, + null, + "GCB"), + Hangul_Syllable_Type( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Hangul_Syllable_Type_Values.class, + null, + "hst"), + IDNA2008_Category( + PropertyType.Enumerated, + DerivedPropertyStatus.NonUCDProperty, + IDNA2008_Category_Values.class, + null, + "IDNA2008_Category"), + Identifier_Status( + PropertyType.Enumerated, + DerivedPropertyStatus.NonUCDProperty, + Identifier_Status_Values.class, + null, + "ID_Status"), + Identifier_Type( + PropertyType.Enumerated, + DerivedPropertyStatus.NonUCDProperty, + Identifier_Type_Values.class, + ValueCardinality.Unordered, + "ID_Type"), + Idn_2008( + PropertyType.Enumerated, + DerivedPropertyStatus.NonUCDNonProperty, + Idn_2008_Values.class, + null, + "idn8"), + Idn_Status( + PropertyType.Enumerated, + DerivedPropertyStatus.NonUCDNonProperty, + Idn_Status_Values.class, + null, + "idns"), + Indic_Conjunct_Break( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Indic_Conjunct_Break_Values.class, + null, + "InCB"), + Indic_Positional_Category( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Indic_Positional_Category_Values.class, + null, + "InPC"), + Indic_Syllabic_Category( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Indic_Syllabic_Category_Values.class, + null, + "InSC"), + Joining_Group( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Joining_Group_Values.class, + null, + "jg"), + Joining_Type( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Joining_Type_Values.class, + null, + "jt"), + Line_Break( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Line_Break_Values.class, + null, + "lb"), + Link_Term( + PropertyType.Enumerated, + DerivedPropertyStatus.NonUCDProperty, + Link_Term_Values.class, + null, + "Link_Term"), + Math_Class( + PropertyType.Enumerated, + DerivedPropertyStatus.NonUCDProperty, + Math_Class_Values.class, + ValueCardinality.Ordered, + "Math_Class"), + Math_Class_Ex( + PropertyType.Enumerated, + DerivedPropertyStatus.NonUCDNonProperty, + Math_Class_Ex_Values.class, + ValueCardinality.Ordered, + "Math_Class_Ex"), + NFC_Quick_Check( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + NFC_Quick_Check_Values.class, + null, + "NFC_QC"), + NFD_Quick_Check( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + NFD_Quick_Check_Values.class, + null, + "NFD_QC"), + NFKC_Quick_Check( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + NFKC_Quick_Check_Values.class, + null, + "NFKC_QC"), + NFKD_Quick_Check( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + NFKD_Quick_Check_Values.class, + null, + "NFKD_QC"), + Numeric_Type( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Numeric_Type_Values.class, + null, + "nt"), + Other_Joining_Type( + PropertyType.Enumerated, + DerivedPropertyStatus.UCDNonProperty, + Other_Joining_Type_Values.class, + null, + "Other_Joining_Type"), + RGI_Emoji_Qualification( + PropertyType.Enumerated, + DerivedPropertyStatus.NonUCDProperty, + RGI_Emoji_Qualification_Values.class, + null, + "RGI_Emoji_Qualification"), + Sentence_Break( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Sentence_Break_Values.class, + null, + "SB"), + Vertical_Orientation( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Vertical_Orientation_Values.class, + null, + "vo"), + Word_Break( + PropertyType.Enumerated, + DerivedPropertyStatus.Approved, + Word_Break_Values.class, + null, + "WB"), + kEH_Core( + PropertyType.Enumerated, + DerivedPropertyStatus.Provisional, + kEH_Core_Values.class, + null, + "kEH_Core"), - // Binary - ASCII_Hex_Digit(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "AHex"), + // Binary + ASCII_Hex_Digit( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "AHex"), Alphabetic(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Alpha"), - Basic_Emoji(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "BE"), + Basic_Emoji( + PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "BE"), Bidi_Control(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Bidi_C"), - Bidi_Mirrored(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Bidi_M"), + Bidi_Mirrored( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Bidi_M"), Case_Ignorable(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CI"), Cased(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Cased"), - Changes_When_Casefolded(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWCF"), - Changes_When_Casemapped(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWCM"), - Changes_When_Lowercased(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWL"), - Changes_When_NFKC_Casefolded(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWKCF"), - Changes_When_Titlecased(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWT"), - Changes_When_Uppercased(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWU"), - Composition_Exclusion(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CE"), + Changes_When_Casefolded( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWCF"), + Changes_When_Casemapped( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWCM"), + Changes_When_Lowercased( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWL"), + Changes_When_NFKC_Casefolded( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWKCF"), + Changes_When_Titlecased( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWT"), + Changes_When_Uppercased( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CWU"), + Composition_Exclusion( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "CE"), Dash(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Dash"), - Default_Ignorable_Code_Point(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "DI"), + Default_Ignorable_Code_Point( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "DI"), Deprecated(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Dep"), Diacritic(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Dia"), Emoji(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Emoji"), - Emoji_Component(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EComp"), + Emoji_Component( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EComp"), Emoji_Modifier(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EMod"), - Emoji_Modifier_Base(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EBase"), - Emoji_Presentation(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EPres"), - Expands_On_NFC(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFC"), - Expands_On_NFD(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFD"), - Expands_On_NFKC(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFKC"), - Expands_On_NFKD(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFKD"), - Extended_Pictographic(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ExtPict"), + Emoji_Modifier_Base( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EBase"), + Emoji_Presentation( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "EPres"), + Expands_On_NFC( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFC"), + Expands_On_NFD( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFD"), + Expands_On_NFKC( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFKC"), + Expands_On_NFKD( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XO_NFKD"), + Extended_Pictographic( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ExtPict"), Extender(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Ext"), - Full_Composition_Exclusion(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Comp_Ex"), - Grapheme_Base(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Base"), - Grapheme_Extend(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Ext"), - Grapheme_Link(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Link"), + Full_Composition_Exclusion( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Comp_Ex"), + Grapheme_Base( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Base"), + Grapheme_Extend( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Ext"), + Grapheme_Link( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Gr_Link"), Hex_Digit(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Hex"), Hyphen(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Hyphen"), - IDS_Binary_Operator(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDSB"), - IDS_Trinary_Operator(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDST"), - IDS_Unary_Operator(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDSU"), - ID_Compat_Math_Continue(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ID_Compat_Math_Continue"), - ID_Compat_Math_Start(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ID_Compat_Math_Start"), + IDS_Binary_Operator( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDSB"), + IDS_Trinary_Operator( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDST"), + IDS_Unary_Operator( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDSU"), + ID_Compat_Math_Continue( + PropertyType.Binary, + DerivedPropertyStatus.Approved, + Binary.class, + null, + "ID_Compat_Math_Continue"), + ID_Compat_Math_Start( + PropertyType.Binary, + DerivedPropertyStatus.Approved, + Binary.class, + null, + "ID_Compat_Math_Start"), ID_Continue(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDC"), ID_Start(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "IDS"), Ideographic(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Ideo"), Join_Control(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Join_C"), - Link_Email(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "Link_Email"), - Logical_Order_Exception(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "LOE"), + Link_Email( + PropertyType.Binary, + DerivedPropertyStatus.NonUCDProperty, + Binary.class, + null, + "Link_Email"), + Logical_Order_Exception( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "LOE"), Lowercase(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Lower"), Math(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Math"), - Modifier_Combining_Mark(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "MCM"), - Noncharacter_Code_Point(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "NChar"), - Other_Alphabetic(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OAlpha"), - Other_Default_Ignorable_Code_Point(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ODI"), - Other_Grapheme_Extend(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OGr_Ext"), - Other_ID_Continue(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OIDC"), + Modifier_Combining_Mark( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "MCM"), + Noncharacter_Code_Point( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "NChar"), + Other_Alphabetic( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OAlpha"), + Other_Default_Ignorable_Code_Point( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "ODI"), + Other_Grapheme_Extend( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OGr_Ext"), + Other_ID_Continue( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OIDC"), Other_ID_Start(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OIDS"), - Other_Lowercase(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OLower"), + Other_Lowercase( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OLower"), Other_Math(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OMath"), - Other_Uppercase(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OUpper"), - Pattern_Syntax(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Pat_Syn"), - Pattern_White_Space(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Pat_WS"), - Prepended_Concatenation_Mark(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "PCM"), - Quotation_Mark(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "QMark"), - RGI_Emoji(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "RGI_Emoji"), - RGI_Emoji_Flag_Sequence(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "REFS", "Emoji_Flag_Sequence"), - RGI_Emoji_Keycap_Sequence(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "REKS", "Emoji_Keycap_Sequence", "Emoji_Combining_Sequence"), - RGI_Emoji_Modifier_Sequence(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "REMS", "Emoji_Modifier_Sequence"), - RGI_Emoji_Tag_Sequence(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "RETS", "Emoji_Tag_Sequence"), - RGI_Emoji_Zwj_Sequence(PropertyType.Binary, DerivedPropertyStatus.NonUCDProperty, Binary.class, null, "REZS", "Emoji_Zwj_Sequence"), + Other_Uppercase( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "OUpper"), + Pattern_Syntax( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Pat_Syn"), + Pattern_White_Space( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Pat_WS"), + Prepended_Concatenation_Mark( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "PCM"), + Quotation_Mark( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "QMark"), + RGI_Emoji( + PropertyType.Binary, + DerivedPropertyStatus.NonUCDProperty, + Binary.class, + null, + "RGI_Emoji"), + RGI_Emoji_Flag_Sequence( + PropertyType.Binary, + DerivedPropertyStatus.NonUCDProperty, + Binary.class, + null, + "REFS", + "Emoji_Flag_Sequence"), + RGI_Emoji_Keycap_Sequence( + PropertyType.Binary, + DerivedPropertyStatus.NonUCDProperty, + Binary.class, + null, + "REKS", + "Emoji_Keycap_Sequence", + "Emoji_Combining_Sequence"), + RGI_Emoji_Modifier_Sequence( + PropertyType.Binary, + DerivedPropertyStatus.NonUCDProperty, + Binary.class, + null, + "REMS", + "Emoji_Modifier_Sequence"), + RGI_Emoji_Tag_Sequence( + PropertyType.Binary, + DerivedPropertyStatus.NonUCDProperty, + Binary.class, + null, + "RETS", + "Emoji_Tag_Sequence"), + RGI_Emoji_Zwj_Sequence( + PropertyType.Binary, + DerivedPropertyStatus.NonUCDProperty, + Binary.class, + null, + "REZS", + "Emoji_Zwj_Sequence"), Radical(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Radical"), - Regional_Indicator(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "RI"), - Sentence_Terminal(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "STerm"), + Regional_Indicator( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "RI"), + Sentence_Terminal( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "STerm"), Soft_Dotted(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "SD"), - Terminal_Punctuation(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Term"), - Unified_Ideograph(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "UIdeo"), + Terminal_Punctuation( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Term"), + Unified_Ideograph( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "UIdeo"), Uppercase(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "Upper"), - Variation_Selector(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "VS"), - White_Space(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "WSpace", "space"), + Variation_Selector( + PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "VS"), + White_Space( + PropertyType.Binary, + DerivedPropertyStatus.Approved, + Binary.class, + null, + "WSpace", + "space"), XID_Continue(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XIDC"), XID_Start(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "XIDS"), - kEH_NoMirror(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "kEH_NoMirror"), - kEH_NoRotate(PropertyType.Binary, DerivedPropertyStatus.Approved, Binary.class, null, "kEH_NoRotate"), + kEH_NoMirror( + PropertyType.Binary, + DerivedPropertyStatus.Approved, + Binary.class, + null, + "kEH_NoMirror"), + kEH_NoRotate( + PropertyType.Binary, + DerivedPropertyStatus.Approved, + Binary.class, + null, + "kEH_NoRotate"), - // Unknown - ; +// Unknown +; -private final PropertyType type; - private final DerivedPropertyStatus status; private final PropertyNames names; + private final PropertyType type; + private final DerivedPropertyStatus status; + private final PropertyNames names; // for enums private final NameMatcher name2enum; private final EnumSet enums; private final Class enumClass; private final ValueCardinality cardinality; - - private UcdProperty(PropertyType type, - DerivedPropertyStatus status, - String shortName, - String[] otherNames, - String[] extraNames) { + + private UcdProperty( + PropertyType type, + DerivedPropertyStatus status, + String shortName, + String[] otherNames, + String[] extraNames) { this.type = type; this.status = status; - names = new PropertyNames(UcdProperty.class, this, shortName, otherNames, extraNames); + names = + new PropertyNames( + UcdProperty.class, this, shortName, otherNames, extraNames); name2enum = null; enums = null; enumClass = null; cardinality = ValueCardinality.Singleton; } - - private UcdProperty(PropertyType type, - DerivedPropertyStatus status, - String shortName, - String... otherNames) { + private UcdProperty( + PropertyType type, + DerivedPropertyStatus status, + String shortName, + String... otherNames) { this.type = type; this.status = status; names = new PropertyNames(UcdProperty.class, this, shortName, otherNames); @@ -434,7 +1206,7 @@ private UcdProperty( enumClass = classItem; } } - + public ValueCardinality getCardinality() { return cardinality; } diff --git a/unicodetools/src/main/java/org/unicode/props/UcdPropertyValues.java b/unicodetools/src/main/java/org/unicode/props/UcdPropertyValues.java index 0c8026135..030fce126 100644 --- a/unicodetools/src/main/java/org/unicode/props/UcdPropertyValues.java +++ b/unicodetools/src/main/java/org/unicode/props/UcdPropertyValues.java @@ -17,8 +17,7 @@ public enum Binary implements Named { private final PropertyNames names; private Binary(String shortName, String... otherNames) { - names = new PropertyNames( - Binary.class, this, shortName, otherNames); + names = new PropertyNames(Binary.class, this, shortName, otherNames); } @Override @@ -31,7 +30,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Binary.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Binary.class); public static Binary forName(String name) { return NAME_MATCHER.get(name); @@ -63,7 +63,7 @@ public enum Age_Values implements Named { V12_1("12.1"), V13_0("13.0"), V13_1("13.1"), // TODO: there is no Unicode 13.1, see -// https://github.com/unicode-org/unicodetools/issues/100 + // https://github.com/unicode-org/unicodetools/issues/100 V14_0("14.0"), V15_0("15.0"), V15_1("15.1"), @@ -74,8 +74,7 @@ public enum Age_Values implements Named { private final PropertyNames names; private Age_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Age_Values.class, this, shortName, otherNames); + names = new PropertyNames(Age_Values.class, this, shortName, otherNames); } @Override @@ -88,14 +87,15 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Age_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Age_Values.class); public static Age_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Arabic_Shaping_Schematic_Name + // Arabic_Shaping_Schematic_Name public enum Bidi_Class_Values implements Named { Arabic_Letter("AL"), Arabic_Number("AN"), @@ -123,8 +123,9 @@ public enum Bidi_Class_Values implements Named { private final PropertyNames names; private Bidi_Class_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Bidi_Class_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Bidi_Class_Values.class, this, shortName, otherNames); } @Override @@ -137,15 +138,16 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Bidi_Class_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Bidi_Class_Values.class); public static Bidi_Class_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Bidi_Mirroring_Glyph - // Bidi_Paired_Bracket + // Bidi_Mirroring_Glyph + // Bidi_Paired_Bracket public enum Bidi_Paired_Bracket_Type_Values implements Named { Close("c"), None("n"), @@ -153,8 +155,9 @@ public enum Bidi_Paired_Bracket_Type_Values implements Named { private final PropertyNames names; private Bidi_Paired_Bracket_Type_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Bidi_Paired_Bracket_Type_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Bidi_Paired_Bracket_Type_Values.class, this, shortName, otherNames); } @Override @@ -167,7 +170,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Bidi_Paired_Bracket_Type_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Bidi_Paired_Bracket_Type_Values.class); public static Bidi_Paired_Bracket_Type_Values forName(String name) { return NAME_MATCHER.get(name); @@ -263,7 +267,8 @@ public enum Block_Values implements Named { Devanagari_Extended_A("Devanagari_Ext_A"), Combining_Diacritical_Marks("Diacriticals"), Combining_Diacritical_Marks_Extended("Diacriticals_Ext"), - Combining_Diacritical_Marks_For_Symbols("Diacriticals_For_Symbols", "Combining_Marks_For_Symbols"), + Combining_Diacritical_Marks_For_Symbols( + "Diacriticals_For_Symbols", "Combining_Marks_For_Symbols"), Combining_Diacritical_Marks_Supplement("Diacriticals_Sup"), Dingbats("Dingbats"), Dives_Akuru("Dives_Akuru"), @@ -532,8 +537,9 @@ public enum Block_Values implements Named { private final PropertyNames names; private Block_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Block_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Block_Values.class, this, shortName, otherNames); } @Override @@ -546,7 +552,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Block_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Block_Values.class); public static Block_Values forName(String name) { return NAME_MATCHER.get(name); @@ -714,8 +721,9 @@ public enum Canonical_Combining_Class_Values implements Named { private final PropertyNames names; private Canonical_Combining_Class_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Canonical_Combining_Class_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Canonical_Combining_Class_Values.class, this, shortName, otherNames); } @Override @@ -728,20 +736,21 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Canonical_Combining_Class_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Canonical_Combining_Class_Values.class); public static Canonical_Combining_Class_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Case_Folding - // CJK_Radical - // Confusable_MA - // Confusable_ML - // Confusable_SA - // Confusable_SL - // Decomposition_Mapping + // Case_Folding + // CJK_Radical + // Confusable_MA + // Confusable_ML + // Confusable_SA + // Confusable_SL + // Decomposition_Mapping public enum Decomposition_Type_Values implements Named { Canonical("Can", "can"), Compat("Com", "com"), @@ -764,8 +773,9 @@ public enum Decomposition_Type_Values implements Named { private final PropertyNames names; private Decomposition_Type_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Decomposition_Type_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Decomposition_Type_Values.class, this, shortName, otherNames); } @Override @@ -778,14 +788,15 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Decomposition_Type_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Decomposition_Type_Values.class); public static Decomposition_Type_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Do_Not_Emit_Dispreferred + // Do_Not_Emit_Dispreferred public enum Do_Not_Emit_Dispreferred_Type_Values implements Named { None("None"), Indic_Atomic_Consonant("Indic_Atomic_Consonant"), @@ -805,8 +816,12 @@ public enum Do_Not_Emit_Dispreferred_Type_Values implements Named { private final PropertyNames names; private Do_Not_Emit_Dispreferred_Type_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Do_Not_Emit_Dispreferred_Type_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Do_Not_Emit_Dispreferred_Type_Values.class, + this, + shortName, + otherNames); } @Override @@ -819,14 +834,15 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Do_Not_Emit_Dispreferred_Type_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Do_Not_Emit_Dispreferred_Type_Values.class); public static Do_Not_Emit_Dispreferred_Type_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Do_Not_Emit_Preferred + // Do_Not_Emit_Preferred public enum Do_Not_Emit_Type_Values implements Named { None("None"), Indic_Atomic_Consonant("Indic_Atomic_Consonant"), @@ -846,8 +862,9 @@ public enum Do_Not_Emit_Type_Values implements Named { private final PropertyNames names; private Do_Not_Emit_Type_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Do_Not_Emit_Type_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Do_Not_Emit_Type_Values.class, this, shortName, otherNames); } @Override @@ -860,7 +877,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Do_Not_Emit_Type_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Do_Not_Emit_Type_Values.class); public static Do_Not_Emit_Type_Values forName(String name) { return NAME_MATCHER.get(name); @@ -877,8 +895,9 @@ public enum East_Asian_Width_Values implements Named { private final PropertyNames names; private East_Asian_Width_Values(String shortName, String... otherNames) { - names = new PropertyNames( - East_Asian_Width_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + East_Asian_Width_Values.class, this, shortName, otherNames); } @Override @@ -891,19 +910,20 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(East_Asian_Width_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(East_Asian_Width_Values.class); public static East_Asian_Width_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Emoji_DCM - // Emoji_KDDI - // Emoji_SB - // emoji_variation_sequence - // Equivalent_Unified_Ideograph - // FC_NFKC_Closure + // Emoji_DCM + // Emoji_KDDI + // Emoji_SB + // emoji_variation_sequence + // Equivalent_Unified_Ideograph + // FC_NFKC_Closure public enum General_Category_Values implements Named { Other("C"), Control("Cc", "cntrl"), @@ -946,8 +966,9 @@ public enum General_Category_Values implements Named { private final PropertyNames names; private General_Category_Values(String shortName, String... otherNames) { - names = new PropertyNames( - General_Category_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + General_Category_Values.class, this, shortName, otherNames); } @Override @@ -960,7 +981,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(General_Category_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(General_Category_Values.class); public static General_Category_Values forName(String name) { return NAME_MATCHER.get(name); @@ -989,8 +1011,9 @@ public enum Grapheme_Cluster_Break_Values implements Named { private final PropertyNames names; private Grapheme_Cluster_Break_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Grapheme_Cluster_Break_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Grapheme_Cluster_Break_Values.class, this, shortName, otherNames); } @Override @@ -1003,7 +1026,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Grapheme_Cluster_Break_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Grapheme_Cluster_Break_Values.class); public static Grapheme_Cluster_Break_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1020,8 +1044,9 @@ public enum Hangul_Syllable_Type_Values implements Named { private final PropertyNames names; private Hangul_Syllable_Type_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Hangul_Syllable_Type_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Hangul_Syllable_Type_Values.class, this, shortName, otherNames); } @Override @@ -1034,7 +1059,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Hangul_Syllable_Type_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Hangul_Syllable_Type_Values.class); public static Hangul_Syllable_Type_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1047,8 +1073,9 @@ public enum Identifier_Status_Values implements Named { private final PropertyNames names; private Identifier_Status_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Identifier_Status_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Identifier_Status_Values.class, this, shortName, otherNames); } @Override @@ -1061,7 +1088,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Identifier_Status_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Identifier_Status_Values.class); public static Identifier_Status_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1085,8 +1113,9 @@ public enum Identifier_Type_Values implements Named { private final PropertyNames names; private Identifier_Type_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Identifier_Type_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Identifier_Type_Values.class, this, shortName, otherNames); } @Override @@ -1099,7 +1128,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Identifier_Type_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Identifier_Type_Values.class); public static Identifier_Type_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1113,8 +1143,9 @@ public enum Idn_2008_Values implements Named { private final PropertyNames names; private Idn_2008_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Idn_2008_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Idn_2008_Values.class, this, shortName, otherNames); } @Override @@ -1127,14 +1158,15 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Idn_2008_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Idn_2008_Values.class); public static Idn_2008_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Idn_Mapping + // Idn_Mapping public enum Idn_Status_Values implements Named { valid("v"), ignored("i"), @@ -1146,8 +1178,9 @@ public enum Idn_Status_Values implements Named { private final PropertyNames names; private Idn_Status_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Idn_Status_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Idn_Status_Values.class, this, shortName, otherNames); } @Override @@ -1160,7 +1193,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Idn_Status_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Idn_Status_Values.class); public static Idn_Status_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1176,8 +1210,9 @@ public enum IDNA2008_Category_Values implements Named { private final PropertyNames names; private IDNA2008_Category_Values(String shortName, String... otherNames) { - names = new PropertyNames( - IDNA2008_Category_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + IDNA2008_Category_Values.class, this, shortName, otherNames); } @Override @@ -1190,7 +1225,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(IDNA2008_Category_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(IDNA2008_Category_Values.class); public static IDNA2008_Category_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1205,8 +1241,9 @@ public enum Indic_Conjunct_Break_Values implements Named { private final PropertyNames names; private Indic_Conjunct_Break_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Indic_Conjunct_Break_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Indic_Conjunct_Break_Values.class, this, shortName, otherNames); } @Override @@ -1219,7 +1256,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Indic_Conjunct_Break_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Indic_Conjunct_Break_Values.class); public static Indic_Conjunct_Break_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1247,8 +1285,9 @@ public enum Indic_Positional_Category_Values implements Named { private final PropertyNames names; private Indic_Positional_Category_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Indic_Positional_Category_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Indic_Positional_Category_Values.class, this, shortName, otherNames); } @Override @@ -1261,7 +1300,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Indic_Positional_Category_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Indic_Positional_Category_Values.class); public static Indic_Positional_Category_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1310,8 +1350,9 @@ public enum Indic_Syllabic_Category_Values implements Named { private final PropertyNames names; private Indic_Syllabic_Category_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Indic_Syllabic_Category_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Indic_Syllabic_Category_Values.class, this, shortName, otherNames); } @Override @@ -1324,14 +1365,15 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Indic_Syllabic_Category_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Indic_Syllabic_Category_Values.class); public static Indic_Syllabic_Category_Values forName(String name) { return NAME_MATCHER.get(name); } } - // ISO_Comment + // ISO_Comment public enum Jamo_Short_Name_Values implements Named { A("A"), AE("AE"), @@ -1388,8 +1430,9 @@ public enum Jamo_Short_Name_Values implements Named { private final PropertyNames names; private Jamo_Short_Name_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Jamo_Short_Name_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Jamo_Short_Name_Values.class, this, shortName, otherNames); } @Override @@ -1402,7 +1445,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Jamo_Short_Name_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Jamo_Short_Name_Values.class); public static Jamo_Short_Name_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1543,8 +1587,9 @@ public enum Joining_Group_Values implements Named { private final PropertyNames names; private Joining_Group_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Joining_Group_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Joining_Group_Values.class, this, shortName, otherNames); } @Override @@ -1557,7 +1602,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Joining_Group_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Joining_Group_Values.class); public static Joining_Group_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1574,8 +1620,9 @@ public enum Joining_Type_Values implements Named { private final PropertyNames names; private Joining_Type_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Joining_Type_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Joining_Type_Values.class, this, shortName, otherNames); } @Override @@ -1588,35 +1635,36 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Joining_Type_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Joining_Type_Values.class); public static Joining_Type_Values forName(String name) { return NAME_MATCHER.get(name); } } - // kAccountingNumeric - // kAlternateHanYu - // kAlternateJEF - // kAlternateKangXi - // kAlternateMorohashi - // kAlternateTotalStrokes - // kBigFive - // kCangjie - // kCantonese - // kCCCII - // kCheungBauer - // kCheungBauerIndex - // kCihaiT - // kCNS1986 - // kCNS1992 - // kCompatibilityVariant - // kCowles - // kDaeJaweon - // kDefinition - // kEACC - // kEH_AltSeq - // kEH_Cat + // kAccountingNumeric + // kAlternateHanYu + // kAlternateJEF + // kAlternateKangXi + // kAlternateMorohashi + // kAlternateTotalStrokes + // kBigFive + // kCangjie + // kCantonese + // kCCCII + // kCheungBauer + // kCheungBauerIndex + // kCihaiT + // kCNS1986 + // kCNS1992 + // kCompatibilityVariant + // kCowles + // kDaeJaweon + // kDefinition + // kEACC + // kEH_AltSeq + // kEH_Cat public enum kEH_Core_Values implements Named { Core("C"), Legacy("L"), @@ -1624,8 +1672,9 @@ public enum kEH_Core_Values implements Named { private final PropertyNames names; private kEH_Core_Values(String shortName, String... otherNames) { - names = new PropertyNames( - kEH_Core_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + kEH_Core_Values.class, this, shortName, otherNames); } @Override @@ -1638,133 +1687,134 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(kEH_Core_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(kEH_Core_Values.class); public static kEH_Core_Values forName(String name) { return NAME_MATCHER.get(name); } } - // kEH_Desc - // kEH_Func - // kEH_FVal - // kEH_HG - // kEH_IFAO - // kEH_JSesh - // kEH_UniK - // kFanqie - // kFenn - // kFennIndex - // kFourCornerCode - // kFrequency - // kGB0 - // kGB1 - // kGB3 - // kGB5 - // kGB7 - // kGB8 - // kGradeLevel - // kGSR - // kHangul - // kHanYu - // kHanyuPinlu - // kHanyuPinyin - // kHDZRadBreak - // kHKGlyph - // kHKSCS - // kIBMJapan - // kIICore - // kIRG_GSource - // kIRG_HSource - // kIRG_JSource - // kIRG_KPSource - // kIRG_KSource - // kIRG_MSource - // kIRG_SSource - // kIRG_TSource - // kIRG_UKSource - // kIRG_USource - // kIRG_VSource - // kIRGDaeJaweon - // kIRGDaiKanwaZiten - // kIRGHanyuDaZidian - // kIRGKangXi - // kJa - // kJapanese - // kJapaneseKun - // kJapaneseOn - // kJHJ - // kJinmeiyoKanji - // kJis0 - // kJis1 - // kJIS0213 - // kJoyoKanji - // kJURC_NCReading - // kJURC_Numeric - // kJURC_RSUnicode - // kJURC_Src - // kKangXi - // kKarlgren - // kKorean - // kKoreanEducationHanja - // kKoreanName - // kKPS0 - // kKPS1 - // kKSC0 - // kKSC1 - // kLau - // kMainlandTelegraph - // kMandarin - // kMatthews - // kMeyerWempe - // kMojiJoho - // kMorohashi - // kNelson - // kNSHU_DubenSrc - // kNSHU_Reading - // kOtherNumeric - // kPhonetic - // kPrimaryNumeric - // kPseudoGB1 - // kRSAdobe_Japan1_6 - // kRSJapanese - // kRSKangXi - // kRSKanWa - // kRSKorean - // kRSMerged - // kRSUnicode - // kSBGY - // kSEAL_CCZSrc - // kSEAL_DYCSrc - // kSEAL_MCJK - // kSEAL_QJZSrc - // kSEAL_Rad - // kSEAL_THXSrc - // kSemanticVariant - // kSimplifiedVariant - // kSMSZD2003Index - // kSMSZD2003Readings - // kSpecializedSemanticVariant - // kSpoofingVariant - // kStrange - // kTaiwanTelegraph - // kTang - // kTayNumeric - // kTGH - // kTGHZ2013 - // kTGT_MergedSrc - // kTGT_Numeric - // kTGT_RSUnicode - // kTotalStrokes - // kTraditionalVariant - // kUnihanCore2020 - // kVietnamese - // kVietnameseNumeric - // kXerox - // kXHC1983 - // kZhuang - // kZhuangNumeric - // kZVariant + // kEH_Desc + // kEH_Func + // kEH_FVal + // kEH_HG + // kEH_IFAO + // kEH_JSesh + // kEH_UniK + // kFanqie + // kFenn + // kFennIndex + // kFourCornerCode + // kFrequency + // kGB0 + // kGB1 + // kGB3 + // kGB5 + // kGB7 + // kGB8 + // kGradeLevel + // kGSR + // kHangul + // kHanYu + // kHanyuPinlu + // kHanyuPinyin + // kHDZRadBreak + // kHKGlyph + // kHKSCS + // kIBMJapan + // kIICore + // kIRG_GSource + // kIRG_HSource + // kIRG_JSource + // kIRG_KPSource + // kIRG_KSource + // kIRG_MSource + // kIRG_SSource + // kIRG_TSource + // kIRG_UKSource + // kIRG_USource + // kIRG_VSource + // kIRGDaeJaweon + // kIRGDaiKanwaZiten + // kIRGHanyuDaZidian + // kIRGKangXi + // kJa + // kJapanese + // kJapaneseKun + // kJapaneseOn + // kJHJ + // kJinmeiyoKanji + // kJis0 + // kJis1 + // kJIS0213 + // kJoyoKanji + // kJURC_NCReading + // kJURC_Numeric + // kJURC_RSUnicode + // kJURC_Src + // kKangXi + // kKarlgren + // kKorean + // kKoreanEducationHanja + // kKoreanName + // kKPS0 + // kKPS1 + // kKSC0 + // kKSC1 + // kLau + // kMainlandTelegraph + // kMandarin + // kMatthews + // kMeyerWempe + // kMojiJoho + // kMorohashi + // kNelson + // kNSHU_DubenSrc + // kNSHU_Reading + // kOtherNumeric + // kPhonetic + // kPrimaryNumeric + // kPseudoGB1 + // kRSAdobe_Japan1_6 + // kRSJapanese + // kRSKangXi + // kRSKanWa + // kRSKorean + // kRSMerged + // kRSUnicode + // kSBGY + // kSEAL_CCZSrc + // kSEAL_DYCSrc + // kSEAL_MCJK + // kSEAL_QJZSrc + // kSEAL_Rad + // kSEAL_THXSrc + // kSemanticVariant + // kSimplifiedVariant + // kSMSZD2003Index + // kSMSZD2003Readings + // kSpecializedSemanticVariant + // kSpoofingVariant + // kStrange + // kTaiwanTelegraph + // kTang + // kTayNumeric + // kTGH + // kTGHZ2013 + // kTGT_MergedSrc + // kTGT_Numeric + // kTGT_RSUnicode + // kTotalStrokes + // kTraditionalVariant + // kUnihanCore2020 + // kVietnamese + // kVietnameseNumeric + // kXerox + // kXHC1983 + // kZhuang + // kZhuangNumeric + // kZVariant public enum Line_Break_Values implements Named { Ambiguous("AI"), Aksara("AK"), @@ -1818,8 +1868,9 @@ public enum Line_Break_Values implements Named { private final PropertyNames names; private Line_Break_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Line_Break_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Line_Break_Values.class, this, shortName, otherNames); } @Override @@ -1832,14 +1883,15 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Line_Break_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Line_Break_Values.class); public static Line_Break_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Link_Bracket + // Link_Bracket public enum Link_Term_Values implements Named { Include("Include"), Hard("Hard"), @@ -1849,8 +1901,9 @@ public enum Link_Term_Values implements Named { private final PropertyNames names; private Link_Term_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Link_Term_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Link_Term_Values.class, this, shortName, otherNames); } @Override @@ -1863,14 +1916,15 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Link_Term_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Link_Term_Values.class); public static Link_Term_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Lowercase_Mapping + // Lowercase_Mapping public enum Math_Class_Values implements Named { None("None"), Normal("N"), @@ -1892,8 +1946,9 @@ public enum Math_Class_Values implements Named { private final PropertyNames names; private Math_Class_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Math_Class_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Math_Class_Values.class, this, shortName, otherNames); } @Override @@ -1906,7 +1961,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Math_Class_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Math_Class_Values.class); public static Math_Class_Values forName(String name) { return NAME_MATCHER.get(name); @@ -1933,8 +1989,9 @@ public enum Math_Class_Ex_Values implements Named { private final PropertyNames names; private Math_Class_Ex_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Math_Class_Ex_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Math_Class_Ex_Values.class, this, shortName, otherNames); } @Override @@ -1947,25 +2004,26 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Math_Class_Ex_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Math_Class_Ex_Values.class); public static Math_Class_Ex_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Math_Descriptive_Comments - // Math_Entity_Name - // Math_Entity_Set - // Name - // Name_Alias - // Named_Sequences - // Named_Sequences_Prov - // Names_List_Alias - // Names_List_Comment - // Names_List_Cross_Ref - // Names_List_Subheader - // Names_List_Subheader_Notice + // Math_Descriptive_Comments + // Math_Entity_Name + // Math_Entity_Set + // Name + // Name_Alias + // Named_Sequences + // Named_Sequences_Prov + // Names_List_Alias + // Names_List_Comment + // Names_List_Cross_Ref + // Names_List_Subheader + // Names_List_Subheader_Notice public enum NFC_Quick_Check_Values implements Named { Maybe("M"), No("N"), @@ -1973,8 +2031,9 @@ public enum NFC_Quick_Check_Values implements Named { private final PropertyNames names; private NFC_Quick_Check_Values(String shortName, String... otherNames) { - names = new PropertyNames( - NFC_Quick_Check_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + NFC_Quick_Check_Values.class, this, shortName, otherNames); } @Override @@ -1987,7 +2046,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(NFC_Quick_Check_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(NFC_Quick_Check_Values.class); public static NFC_Quick_Check_Values forName(String name) { return NAME_MATCHER.get(name); @@ -2000,8 +2060,9 @@ public enum NFD_Quick_Check_Values implements Named { private final PropertyNames names; private NFD_Quick_Check_Values(String shortName, String... otherNames) { - names = new PropertyNames( - NFD_Quick_Check_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + NFD_Quick_Check_Values.class, this, shortName, otherNames); } @Override @@ -2014,14 +2075,15 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(NFD_Quick_Check_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(NFD_Quick_Check_Values.class); public static NFD_Quick_Check_Values forName(String name) { return NAME_MATCHER.get(name); } } - // NFKC_Casefold + // NFKC_Casefold public enum NFKC_Quick_Check_Values implements Named { Maybe("M"), No("N"), @@ -2029,8 +2091,9 @@ public enum NFKC_Quick_Check_Values implements Named { private final PropertyNames names; private NFKC_Quick_Check_Values(String shortName, String... otherNames) { - names = new PropertyNames( - NFKC_Quick_Check_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + NFKC_Quick_Check_Values.class, this, shortName, otherNames); } @Override @@ -2043,22 +2106,24 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(NFKC_Quick_Check_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(NFKC_Quick_Check_Values.class); public static NFKC_Quick_Check_Values forName(String name) { return NAME_MATCHER.get(name); } } - // NFKC_Simple_Casefold + // NFKC_Simple_Casefold public enum NFKD_Quick_Check_Values implements Named { No("N"), Yes("Y"); private final PropertyNames names; private NFKD_Quick_Check_Values(String shortName, String... otherNames) { - names = new PropertyNames( - NFKD_Quick_Check_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + NFKD_Quick_Check_Values.class, this, shortName, otherNames); } @Override @@ -2071,17 +2136,18 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(NFKD_Quick_Check_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(NFKD_Quick_Check_Values.class); public static NFKD_Quick_Check_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Non_Unihan_Numeric_Value - // normalization_correction_corrected - // normalization_correction_original - // normalization_correction_version + // Non_Unihan_Numeric_Value + // normalization_correction_corrected + // normalization_correction_original + // normalization_correction_version public enum Numeric_Type_Values implements Named { Decimal("De"), Digit("Di"), @@ -2090,8 +2156,9 @@ public enum Numeric_Type_Values implements Named { private final PropertyNames names; private Numeric_Type_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Numeric_Type_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Numeric_Type_Values.class, this, shortName, otherNames); } @Override @@ -2104,14 +2171,15 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Numeric_Type_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Numeric_Type_Values.class); public static Numeric_Type_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Numeric_Value + // Numeric_Value public enum Other_Joining_Type_Values implements Named { Join_Causing("C"), Dual_Joining("D"), @@ -2123,8 +2191,9 @@ public enum Other_Joining_Type_Values implements Named { private final PropertyNames names; private Other_Joining_Type_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Other_Joining_Type_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Other_Joining_Type_Values.class, this, shortName, otherNames); } @Override @@ -2137,7 +2206,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Other_Joining_Type_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Other_Joining_Type_Values.class); public static Other_Joining_Type_Values forName(String name) { return NAME_MATCHER.get(name); @@ -2154,8 +2224,9 @@ public enum RGI_Emoji_Qualification_Values implements Named { private final PropertyNames names; private RGI_Emoji_Qualification_Values(String shortName, String... otherNames) { - names = new PropertyNames( - RGI_Emoji_Qualification_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + RGI_Emoji_Qualification_Values.class, this, shortName, otherNames); } @Override @@ -2168,7 +2239,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(RGI_Emoji_Qualification_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(RGI_Emoji_Qualification_Values.class); public static RGI_Emoji_Qualification_Values forName(String name) { return NAME_MATCHER.get(name); @@ -2366,8 +2438,9 @@ public enum Script_Values implements Named { private final PropertyNames names; private Script_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Script_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Script_Values.class, this, shortName, otherNames); } @Override @@ -2380,14 +2453,15 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Script_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Script_Values.class); public static Script_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Script_Extensions + // Script_Extensions public enum Sentence_Break_Values implements Named { ATerm("AT"), Close("CL"), @@ -2407,8 +2481,9 @@ public enum Sentence_Break_Values implements Named { private final PropertyNames names; private Sentence_Break_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Sentence_Break_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Sentence_Break_Values.class, this, shortName, otherNames); } @Override @@ -2421,21 +2496,22 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Sentence_Break_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Sentence_Break_Values.class); public static Sentence_Break_Values forName(String name) { return NAME_MATCHER.get(name); } } - // Simple_Case_Folding - // Simple_Lowercase_Mapping - // Simple_Titlecase_Mapping - // Simple_Uppercase_Mapping - // Standardized_Variant - // Titlecase_Mapping - // Unicode_1_Name - // Uppercase_Mapping + // Simple_Case_Folding + // Simple_Lowercase_Mapping + // Simple_Titlecase_Mapping + // Simple_Uppercase_Mapping + // Standardized_Variant + // Titlecase_Mapping + // Unicode_1_Name + // Uppercase_Mapping public enum Vertical_Orientation_Values implements Named { Rotated("R"), Transformed_Rotated("Tr"), @@ -2444,8 +2520,9 @@ public enum Vertical_Orientation_Values implements Named { private final PropertyNames names; private Vertical_Orientation_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Vertical_Orientation_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Vertical_Orientation_Values.class, this, shortName, otherNames); } @Override @@ -2458,7 +2535,8 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Vertical_Orientation_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Vertical_Orientation_Values.class); public static Vertical_Orientation_Values forName(String name) { return NAME_MATCHER.get(name); @@ -2492,8 +2570,9 @@ public enum Word_Break_Values implements Named { private final PropertyNames names; private Word_Break_Values(String shortName, String... otherNames) { - names = new PropertyNames( - Word_Break_Values.class, this, shortName, otherNames); + names = + new PropertyNames( + Word_Break_Values.class, this, shortName, otherNames); } @Override @@ -2506,11 +2585,11 @@ public String getShortName() { return names.getShortName(); } - private static final NameMatcher NAME_MATCHER = PropertyNames.getNameToEnums(Word_Break_Values.class); + private static final NameMatcher NAME_MATCHER = + PropertyNames.getNameToEnums(Word_Break_Values.class); public static Word_Break_Values forName(String name) { return NAME_MATCHER.get(name); } } - } From 7ab1cf4794844993475a5ff00dd4129afbd9a500 Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Fri, 6 Feb 2026 13:19:55 -0800 Subject: [PATCH 16/20] Manage the data loading errors by Unicode version --- .../unicode/props/IndexUnicodeProperties.java | 22 ++- .../unicode/props/PropertyParsingInfo.java | 133 +++++++++++------- .../unicode/propstest/CheckProperties.java | 31 ++-- .../propstest/TestIndexPropertyRegex.java | 40 +++--- 4 files changed, 140 insertions(+), 86 deletions(-) diff --git a/unicodetools/src/main/java/org/unicode/props/IndexUnicodeProperties.java b/unicodetools/src/main/java/org/unicode/props/IndexUnicodeProperties.java index be25f3019..97e9b3443 100644 --- a/unicodetools/src/main/java/org/unicode/props/IndexUnicodeProperties.java +++ b/unicodetools/src/main/java/org/unicode/props/IndexUnicodeProperties.java @@ -4,7 +4,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.ibm.icu.dev.util.CollectionUtilities; -import com.ibm.icu.impl.Relation; import com.ibm.icu.impl.UnicodeMap; import com.ibm.icu.lang.CharSequences; import com.ibm.icu.text.Normalizer2; @@ -80,9 +79,9 @@ public class IndexUnicodeProperties extends UnicodeProperty.Factory { static final boolean SHOW_LOADED = false; public static final String FIELD_SEPARATOR = "; "; - private static final Relation DATA_LOADING_ERRORS = - Relation.of( - new EnumMap>(UcdProperty.class), LinkedHashSet.class); + + private static final Map>> DATA_LOADING_ERRORS = + new HashMap<>(); public enum DefaultValueType { LITERAL(null), @@ -667,7 +666,20 @@ public List getAvailableUcdProperties() { return Arrays.asList(UcdProperty.values()); } - public static Relation getDataLoadingErrors() { + public static void putDataLoadingErrors( + VersionInfo versionInfo, UcdProperty property, String error) { + // Ensure the version map exists + Map> errorsForVersion = + DATA_LOADING_ERRORS.computeIfAbsent(versionInfo, k -> new HashMap<>()); + // Ensure the property set exists and add the error + errorsForVersion.computeIfAbsent(property, k -> new HashSet<>()).add(error); + } + + public static Map> getDataLoadingErrors(VersionInfo versionInfo) { + return DATA_LOADING_ERRORS.get(versionInfo); + } + + public static Map>> getAllDataLoadingErrors() { return DATA_LOADING_ERRORS; } diff --git a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java index 0d6007a8f..633602944 100644 --- a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java +++ b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java @@ -309,8 +309,9 @@ public void put( UnicodeMap data, UcdLineParser.IntRange intRange, String string, - UnicodeProperty nextVersion) { - put(data, intRange, string, null, nextVersion); + UnicodeProperty nextVersion, + VersionInfo versionInfo) { + put(data, intRange, string, null, nextVersion, versionInfo); } public void put( @@ -318,8 +319,9 @@ public void put( UcdLineParser.IntRange intRange, String string, Merge merger, - UnicodeProperty nextVersion) { - put(data, null, intRange, string, merger, false, nextVersion); + UnicodeProperty nextVersion, + VersionInfo versionInfo) { + put(data, null, intRange, string, merger, false, nextVersion, versionInfo); } public void put( @@ -329,7 +331,8 @@ public void put( String value, Merge merger, boolean hackHangul, - UnicodeProperty nextVersion) { + UnicodeProperty nextVersion, + VersionInfo versionInfo) { if (value == null && property == UcdProperty.Idn_2008) { // The IDNA2008 Status field of the IDNA mapping table is treated as an enumerated // property by the tools, with an Extra @missing line with a value na. @@ -346,7 +349,7 @@ public void put( // instead of by default for all but the few properties above. value = null; } - value = normalizeAndVerify(value); + value = normalizeAndVerify(versionInfo, value); if (intRange.string != null) { PropertyUtilities.putNew(data, intRange.string, value, merger); } else { @@ -412,7 +415,7 @@ public void put( } } - public String normalizeAndVerify(String string) { + public String normalizeAndVerify(VersionInfo versionInfo, String string) { switch (property.getType()) { case Enumerated: case Catalog: @@ -424,12 +427,12 @@ public String normalizeAndVerify(String string) { if (property == UcdProperty.Script_Extensions) { string = normalizeEnum(string); } else { - string = checkRegex2(string); + string = checkRegex2(versionInfo, string); } break; case String: // check regex - string = checkRegex2(string); + string = checkRegex2(versionInfo, string); if (string == null) { // nothing } else { @@ -481,9 +484,9 @@ public String normalizeEnum(String string) { return string; } - public String checkRegex2(String string) { + public String checkRegex2(VersionInfo versionInfo, String string) { if (getRegex() == null) { - IndexUnicodeProperties.getDataLoadingErrors().put(property, "Regex missing"); + IndexUnicodeProperties.putDataLoadingErrors(versionInfo, property, "Regex missing"); return string; } if (string == null) { @@ -498,15 +501,15 @@ public String checkRegex2(String string) { if (newString.length() != 0) { newString.append(IndexUnicodeProperties.SET_SEPARATOR); } - checkRegex(part); + checkRegex(versionInfo, part); newString.append(part); } string = newString.toString(); } else { - checkRegex(string); + checkRegex(versionInfo, string); } } else { - checkRegex(string); + checkRegex(versionInfo, string); } return string; } @@ -522,14 +525,14 @@ public String checkEnum(String string) { return string; } - public void checkRegex(String part) { + public void checkRegex(VersionInfo versionInfo, String part) { if (!getRegex().matcher(part).matches()) { final String part2 = NFD.normalize(part); if (!getRegex().matcher(part2).matches()) { - IndexUnicodeProperties.getDataLoadingErrors() - .put( - property, - "Regex failure: " + RegexUtilities.showMismatch(getRegex(), part)); + IndexUnicodeProperties.putDataLoadingErrors( + versionInfo, + property, + "Regex failure: " + RegexUtilities.showMismatch(getRegex(), part)); } } } @@ -661,7 +664,8 @@ static void parseSourceFile( indexUnicodeProperties.property2UnicodeMap.get(propInfo.property), nextProperties == null ? null - : nextProperties.getProperty(propInfo.property)); + : nextProperties.getProperty(propInfo.property), + indexUnicodeProperties.getUcdVersion()); break; case NamedSequences: parseNamedSequencesFile( @@ -772,7 +776,8 @@ static void parseSourceFile( indexUnicodeProperties.property2UnicodeMap.get(propInfo.property), nextProperties == null ? null - : nextProperties.getProperty(propInfo.property)); + : nextProperties.getProperty(propInfo.property), + indexUnicodeProperties.getUcdVersion()); } else { throw new UnicodePropertyException( "List files must have only one property, and must be Boolean"); @@ -938,11 +943,20 @@ private static void parseNamesListFile( codePoint = new IntRange(); codePoint.set(parts[0]); if (subheader != null) { - subheaderPropInfo.put(subheaderData, codePoint, subheader, nextSubheader); + subheaderPropInfo.put( + subheaderData, + codePoint, + subheader, + nextSubheader, + indexUnicodeProperties.getUcdVersion()); } if (subheaderNotice != null) { subheaderNoticePropInfo.put( - subheaderNoticeData, codePoint, subheaderNotice, nextSubheaderNotice); + subheaderNoticeData, + codePoint, + subheaderNotice, + nextSubheaderNotice, + indexUnicodeProperties.getUcdVersion()); } } else if (codePoint != null && parts.length == 2 @@ -960,21 +974,24 @@ private static void parseNamesListFile( codePoint, crossReference, IndexUnicodeProperties.MULTIVALUED_JOINER, - nextCrossReference); + nextCrossReference, + indexUnicodeProperties.getUcdVersion()); } else if (parts[1].startsWith("* ")) { commentPropInfo.put( commentData, codePoint, parts[1].substring(2), IndexUnicodeProperties.MULTIVALUED_JOINER, - nextComment); + nextComment, + indexUnicodeProperties.getUcdVersion()); } else if (parts[1].startsWith("= ")) { aliasPropInfo.put( aliasData, codePoint, parts[1].substring(2), IndexUnicodeProperties.MULTIVALUED_JOINER, - nextAlias); + nextAlias, + indexUnicodeProperties.getUcdVersion()); } } if (parts.length == 2 && parts[0].equals("@")) { @@ -1001,7 +1018,8 @@ private static void parseCJKRadicalsFile( UcdLineParser parser, PropertyParsingInfo propInfo, UnicodeMap data, - UnicodeProperty nextVersion) { + UnicodeProperty nextVersion, + VersionInfo versionInfo) { // Note: CJKRadicals.txt cannot be completely represented via a UnicodeMap. // See the comments in RadicalStroke.getCJKRadicals(). /* @@ -1016,10 +1034,10 @@ private static void parseCJKRadicalsFile( String[] parts = line.getParts(); if (!parts[1].isEmpty()) { intRange.set(parts[1]); - propInfo.put(data, intRange, parts[0], nextVersion); + propInfo.put(data, intRange, parts[0], nextVersion, versionInfo); } intRange.set(parts[2]); - propInfo.put(data, intRange, parts[0], nextVersion); + propInfo.put(data, intRange, parts[0], nextVersion, versionInfo); } } @@ -1039,7 +1057,8 @@ private static void parseNamedSequencesFile( line.getParts()[0], nextProperties == null ? null - : nextProperties.getProperty(propInfo.property)); + : nextProperties.getProperty(propInfo.property), + indexUnicodeProperties.getUcdVersion()); } } } @@ -1085,7 +1104,8 @@ private static void parsePropertyDumpFile( null, nextProperties == null ? null - : nextProperties.getProperty(propInfo.property)); + : nextProperties.getProperty(propInfo.property), + indexUnicodeProperties.getUcdVersion()); } } } @@ -1303,7 +1323,8 @@ private static void parsePropertyValueFile( merger, nextProperties == null ? null - : nextProperties.getProperty(propInfo.property)); + : nextProperties.getProperty(propInfo.property), + indexUnicodeProperties.getUcdVersion()); propInfo.multivaluedSplit = originalMultivaluedSplit; } else { setPropDefault( @@ -1343,7 +1364,8 @@ private static void parseConfusablesFile( data, intRange, parts[1], - nextProperties == null ? null : nextProperties.getProperty(propInfo.property)); + nextProperties == null ? null : nextProperties.getProperty(propInfo.property), + indexUnicodeProperties.getUcdVersion()); } } @@ -1630,7 +1652,8 @@ private static void parseFields( hackHangul && propInfo.property == UcdProperty.Decomposition_Mapping, nextProperties == null ? null - : nextProperties.getProperty(propInfo.property)); + : nextProperties.getProperty(propInfo.property), + indexUnicodeProperties.getUcdVersion()); } else { final var key = new IntRange(); key.set( @@ -1646,7 +1669,8 @@ private static void parseFields( hackHangul && propInfo.property == UcdProperty.Decomposition_Mapping, nextProperties == null ? null - : nextProperties.getProperty(propInfo.property)); + : nextProperties.getProperty(propInfo.property), + indexUnicodeProperties.getUcdVersion()); } } } else { @@ -1727,7 +1751,8 @@ private static void parseSimpleFieldFile( line.getParts()[2], version.getMajor() == 2 ? new PropertyUtilities.Overrider() : null, false, - nextVersion); + nextVersion, + indexUnicodeProperties.getUcdVersion()); continue; } else if (propInfo.property == UcdProperty.Numeric_Value) { String extractedValue = line.getParts()[1]; @@ -1754,7 +1779,8 @@ private static void parseSimpleFieldFile( extractedValue.substring(0, extractedValue.length() - 2), null, false, - nextVersion); + nextVersion, + indexUnicodeProperties.getUcdVersion()); } else { // Prior to Unicode 5.1, DerivedNumericValues.txt is useless for getting // numeric values whose denominator is not a small power of two, as it @@ -1774,7 +1800,8 @@ private static void parseSimpleFieldFile( unicodeDataValue, null, false, - nextVersion); + nextVersion, + indexUnicodeProperties.getUcdVersion()); } } continue; @@ -1798,7 +1825,8 @@ private static void parseSimpleFieldFile( line.getParts()[1], merger, false, - nextVersion); + nextVersion, + indexUnicodeProperties.getUcdVersion()); } else { if (propInfo.property == UcdProperty.Numeric_Value && line.getParts().length == 3 @@ -1830,9 +1858,10 @@ private static void parseListFile( UcdLineParser parser, PropertyParsingInfo propInfo, UnicodeMap data, - UnicodeProperty nextVersion) { + UnicodeProperty nextVersion, + VersionInfo versionInfo) { for (UcdLineParser.UcdLine line : parser) { - propInfo.put(data, line.getRange(), "Yes", nextVersion); + propInfo.put(data, line.getRange(), "Yes", nextVersion, versionInfo); } } @@ -1927,22 +1956,22 @@ public static void setPropDefault( final PropertyParsingInfo propInfo = property2PropertyInfo.get(prop); if (value != null && !value.startsWith("<")) { - value = propInfo.normalizeAndVerify(value); + value = propInfo.normalizeAndVerify(version, value); } if (!propInfo.defaultValues.containsKey(version)) { propInfo.defaultValueType = IndexUnicodeProperties.DefaultValueType.forString(value); propInfo.defaultValues.put(version, value); if (IndexUnicodeProperties.SHOW_DEFAULTS) { - IndexUnicodeProperties.getDataLoadingErrors() - .put( - prop, - "**\t" - + prop - + "\t" - + propInfo.defaultValueType - + "\t" - + propInfo.getDefaultValue(version)); + IndexUnicodeProperties.putDataLoadingErrors( + version, + prop, + "**\t" + + prop + + "\t" + + propInfo.defaultValueType + + "\t" + + propInfo.getDefaultValue(version)); } } else if (propInfo.getDefaultValue(version).equals(value)) { } else if (propInfo.property == UcdProperty.Lowercase_Mapping @@ -1960,7 +1989,7 @@ public static void setPropDefault( + propInfo.getDefaultValue(version); // propInfo.defaultValueType = DefaultValueType.forString(value); // propInfo.defaultValue = value; - IndexUnicodeProperties.getDataLoadingErrors().put(prop, comment); + IndexUnicodeProperties.putDataLoadingErrors(version, prop, comment); } } diff --git a/unicodetools/src/test/java/org/unicode/propstest/CheckProperties.java b/unicodetools/src/test/java/org/unicode/propstest/CheckProperties.java index 0596c8374..f10428ed1 100644 --- a/unicodetools/src/test/java/org/unicode/propstest/CheckProperties.java +++ b/unicodetools/src/test/java/org/unicode/propstest/CheckProperties.java @@ -8,6 +8,7 @@ import com.ibm.icu.text.Transliterator; import com.ibm.icu.text.UTF16; import com.ibm.icu.text.UnicodeSet; +import com.ibm.icu.util.VersionInfo; import java.io.DataOutput; import java.io.File; import java.io.IOException; @@ -296,18 +297,24 @@ public static void main(String[] args) throws Exception { showInfo("Property Enum Canonical Form wrong", PROPNAMEDIFFERENCES, outLog); showInfo("Cache File Sizes", latest.getCacheFileSize().entrySet(), outLog); - final Set>> dataLoadingErrors = - IndexUnicodeProperties.getDataLoadingErrors().keyValuesSet(); - if (dataLoadingErrors.size() != 0) { - outLog.println("Data loading errors: " + dataLoadingErrors.size()); - for (final Entry> s : dataLoadingErrors) { - outLog.println("\t" + s.getKey()); - int max = 100; - for (final String value : s.getValue()) { - outLog.println("\t\t" + value); - if (--max < 0) { - outLog.println("…"); - break; + for (VersionInfo versionInfo : IndexUnicodeProperties.getAllDataLoadingErrors().keySet()) { + final Set>> dataLoadingErrors = + IndexUnicodeProperties.getDataLoadingErrors(versionInfo).entrySet(); + if (!dataLoadingErrors.isEmpty()) { + outLog.println( + "Data loading errors for " + + versionInfo.toString() + + ": " + + dataLoadingErrors.size()); + for (final Entry> s : dataLoadingErrors) { + outLog.println("\t" + s.getKey()); + int max = 100; + for (final String value : s.getValue()) { + outLog.println("\t\t" + value); + if (--max < 0) { + outLog.println("…"); + break; + } } } } diff --git a/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java b/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java index 870a00e29..35a6d8619 100644 --- a/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java +++ b/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java @@ -15,7 +15,6 @@ public class TestIndexPropertyRegex { @Test void testIndexPropertyRegex() throws IOException { - IndexUnicodeProperties.getDataLoadingErrors().clear(); IndexUnicodeProperties latest = IndexUnicodeProperties.make(Settings.latestVersion); for (final UcdProperty prop : UcdProperty.values()) { if (PropertyStatus.getPropertyStatus(prop) != PropertyStatus.Deprecated) { @@ -28,25 +27,32 @@ void testIndexPropertyRegex() throws IOException { } } } - final Set>> dataLoadingErrors = - IndexUnicodeProperties.getDataLoadingErrors().keyValuesSet(); - if (!dataLoadingErrors.isEmpty()) { - System.err.println("Data loading errors: " + dataLoadingErrors.size()); - for (final Map.Entry> s : dataLoadingErrors) { - System.err.println("\t" + s.getKey()); - int max = 100; - for (final String value : s.getValue()) { - System.err.println("\t\t" + value); - if (--max < 0) { - System.err.println("…"); - break; + final Set>> dataLoadingErrors; + if (IndexUnicodeProperties.getDataLoadingErrors(latest.getUcdVersion()) != null) { + dataLoadingErrors = + IndexUnicodeProperties.getDataLoadingErrors(latest.getUcdVersion()).entrySet(); + if (!dataLoadingErrors.isEmpty()) { + System.err.println( + "Data loading errors for " + + latest.getUcdVersion().toString() + + ": " + + dataLoadingErrors.size()); + for (final Map.Entry> s : dataLoadingErrors) { + System.err.println("\t" + s.getKey()); + int max = 100; + for (final String value : s.getValue()) { + System.err.println("\t\t" + value); + if (--max < 0) { + System.err.println("…"); + break; + } } } } + assertEquals( + 0, + dataLoadingErrors.size(), + "TestIndexPropertyRegex.testIndexPropertyRegex() failed"); } - assertEquals( - 0, - dataLoadingErrors.size(), - "TestIndexPropertyRegex.testIndexPropertyRegex() failed"); } } From e09a20dc28782f6507cd13fed3d7a0d1d93612cf Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Fri, 6 Feb 2026 13:49:54 -0800 Subject: [PATCH 17/20] The assert is within the braces, so no need for the declaration to be outside --- .../java/org/unicode/propstest/TestIndexPropertyRegex.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java b/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java index 35a6d8619..fbef53174 100644 --- a/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java +++ b/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java @@ -27,9 +27,8 @@ void testIndexPropertyRegex() throws IOException { } } } - final Set>> dataLoadingErrors; if (IndexUnicodeProperties.getDataLoadingErrors(latest.getUcdVersion()) != null) { - dataLoadingErrors = + final Set>> dataLoadingErrors = IndexUnicodeProperties.getDataLoadingErrors(latest.getUcdVersion()).entrySet(); if (!dataLoadingErrors.isEmpty()) { System.err.println( From 509136893cfd5a00c9fa4f001e9a5da1373405dc Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Mon, 9 Feb 2026 16:23:35 -0800 Subject: [PATCH 18/20] I wasn't happy with how much I had departed from the previous use of Relation, so reverting back to something closer to the original --- .../unicode/props/IndexUnicodeProperties.java | 25 +++++++--------- .../unicode/props/PropertyParsingInfo.java | 30 +++++++++---------- .../unicode/propstest/CheckProperties.java | 7 +++-- .../propstest/TestIndexPropertyRegex.java | 3 +- 4 files changed, 32 insertions(+), 33 deletions(-) diff --git a/unicodetools/src/main/java/org/unicode/props/IndexUnicodeProperties.java b/unicodetools/src/main/java/org/unicode/props/IndexUnicodeProperties.java index 97e9b3443..286dd672f 100644 --- a/unicodetools/src/main/java/org/unicode/props/IndexUnicodeProperties.java +++ b/unicodetools/src/main/java/org/unicode/props/IndexUnicodeProperties.java @@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.ibm.icu.dev.util.CollectionUtilities; +import com.ibm.icu.impl.Relation; import com.ibm.icu.impl.UnicodeMap; import com.ibm.icu.lang.CharSequences; import com.ibm.icu.text.Normalizer2; @@ -80,8 +81,8 @@ public class IndexUnicodeProperties extends UnicodeProperty.Factory { public static final String FIELD_SEPARATOR = "; "; - private static final Map>> DATA_LOADING_ERRORS = - new HashMap<>(); + private static final Map> DATA_LOADING_ERRORS = + new ConcurrentHashMap<>(); public enum DefaultValueType { LITERAL(null), @@ -666,20 +667,16 @@ public List getAvailableUcdProperties() { return Arrays.asList(UcdProperty.values()); } - public static void putDataLoadingErrors( - VersionInfo versionInfo, UcdProperty property, String error) { - // Ensure the version map exists - Map> errorsForVersion = - DATA_LOADING_ERRORS.computeIfAbsent(versionInfo, k -> new HashMap<>()); - // Ensure the property set exists and add the error - errorsForVersion.computeIfAbsent(property, k -> new HashSet<>()).add(error); - } - - public static Map> getDataLoadingErrors(VersionInfo versionInfo) { - return DATA_LOADING_ERRORS.get(versionInfo); + public static Relation getDataLoadingErrors(VersionInfo version) { + return DATA_LOADING_ERRORS.computeIfAbsent( + version, + v -> + Relation.of( + new EnumMap>(UcdProperty.class), + LinkedHashSet.class)); } - public static Map>> getAllDataLoadingErrors() { + public static Map> getDataLoadingErrors() { return DATA_LOADING_ERRORS; } diff --git a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java index 633602944..ec50fdb3e 100644 --- a/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java +++ b/unicodetools/src/main/java/org/unicode/props/PropertyParsingInfo.java @@ -486,7 +486,7 @@ public String normalizeEnum(String string) { public String checkRegex2(VersionInfo versionInfo, String string) { if (getRegex() == null) { - IndexUnicodeProperties.putDataLoadingErrors(versionInfo, property, "Regex missing"); + IndexUnicodeProperties.getDataLoadingErrors(versionInfo).put(property, "Regex missing"); return string; } if (string == null) { @@ -529,10 +529,10 @@ public void checkRegex(VersionInfo versionInfo, String part) { if (!getRegex().matcher(part).matches()) { final String part2 = NFD.normalize(part); if (!getRegex().matcher(part2).matches()) { - IndexUnicodeProperties.putDataLoadingErrors( - versionInfo, - property, - "Regex failure: " + RegexUtilities.showMismatch(getRegex(), part)); + IndexUnicodeProperties.getDataLoadingErrors(versionInfo) + .put( + property, + "Regex failure: " + RegexUtilities.showMismatch(getRegex(), part)); } } } @@ -1963,15 +1963,15 @@ public static void setPropDefault( propInfo.defaultValueType = IndexUnicodeProperties.DefaultValueType.forString(value); propInfo.defaultValues.put(version, value); if (IndexUnicodeProperties.SHOW_DEFAULTS) { - IndexUnicodeProperties.putDataLoadingErrors( - version, - prop, - "**\t" - + prop - + "\t" - + propInfo.defaultValueType - + "\t" - + propInfo.getDefaultValue(version)); + IndexUnicodeProperties.getDataLoadingErrors(version) + .put( + prop, + "**\t" + + prop + + "\t" + + propInfo.defaultValueType + + "\t" + + propInfo.getDefaultValue(version)); } } else if (propInfo.getDefaultValue(version).equals(value)) { } else if (propInfo.property == UcdProperty.Lowercase_Mapping @@ -1989,7 +1989,7 @@ public static void setPropDefault( + propInfo.getDefaultValue(version); // propInfo.defaultValueType = DefaultValueType.forString(value); // propInfo.defaultValue = value; - IndexUnicodeProperties.putDataLoadingErrors(version, prop, comment); + IndexUnicodeProperties.getDataLoadingErrors(version).put(prop, comment); } } diff --git a/unicodetools/src/test/java/org/unicode/propstest/CheckProperties.java b/unicodetools/src/test/java/org/unicode/propstest/CheckProperties.java index f10428ed1..7b37d43b6 100644 --- a/unicodetools/src/test/java/org/unicode/propstest/CheckProperties.java +++ b/unicodetools/src/test/java/org/unicode/propstest/CheckProperties.java @@ -297,13 +297,14 @@ public static void main(String[] args) throws Exception { showInfo("Property Enum Canonical Form wrong", PROPNAMEDIFFERENCES, outLog); showInfo("Cache File Sizes", latest.getCacheFileSize().entrySet(), outLog); - for (VersionInfo versionInfo : IndexUnicodeProperties.getAllDataLoadingErrors().keySet()) { + for (final Entry> versionEntry : + IndexUnicodeProperties.getDataLoadingErrors().entrySet()) { final Set>> dataLoadingErrors = - IndexUnicodeProperties.getDataLoadingErrors(versionInfo).entrySet(); + versionEntry.getValue().keyValuesSet(); if (!dataLoadingErrors.isEmpty()) { outLog.println( "Data loading errors for " - + versionInfo.toString() + + versionEntry.getKey() + ": " + dataLoadingErrors.size()); for (final Entry> s : dataLoadingErrors) { diff --git a/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java b/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java index fbef53174..138cc60c9 100644 --- a/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java +++ b/unicodetools/src/test/java/org/unicode/propstest/TestIndexPropertyRegex.java @@ -29,7 +29,8 @@ void testIndexPropertyRegex() throws IOException { } if (IndexUnicodeProperties.getDataLoadingErrors(latest.getUcdVersion()) != null) { final Set>> dataLoadingErrors = - IndexUnicodeProperties.getDataLoadingErrors(latest.getUcdVersion()).entrySet(); + IndexUnicodeProperties.getDataLoadingErrors(latest.getUcdVersion()) + .keyValuesSet(); if (!dataLoadingErrors.isEmpty()) { System.err.println( "Data loading errors for " From 0e1a22aa2dceebac8a2ff1c585a062069fd4bcea Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Wed, 11 Feb 2026 20:19:49 -0800 Subject: [PATCH 19/20] Fixes from review --- .../java/org/unicode/props/UcdProperty.java | 31 ++++++++++--------- .../org/unicode/props/IndexPropertyRegex.txt | 12 +++---- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/unicodetools/src/main/java/org/unicode/props/UcdProperty.java b/unicodetools/src/main/java/org/unicode/props/UcdProperty.java index f55a365ac..6de77b0c8 100644 --- a/unicodetools/src/main/java/org/unicode/props/UcdProperty.java +++ b/unicodetools/src/main/java/org/unicode/props/UcdProperty.java @@ -105,11 +105,7 @@ public enum UcdProperty { ValueCardinality.Unordered, "Do_Not_Emit_Dispreferred"), Do_Not_Emit_Preferred( - PropertyType.String, - DerivedPropertyStatus.UCDNonProperty, - null, - ValueCardinality.Unordered, - "Do_Not_Emit_Preferred"), + PropertyType.String, DerivedPropertyStatus.UCDNonProperty, "Do_Not_Emit_Preferred"), Equivalent_Unified_Ideograph(PropertyType.String, DerivedPropertyStatus.Approved, "EqUIdeo"), FC_NFKC_Closure(PropertyType.String, DerivedPropertyStatus.Approved, "FC_NFKC"), Idn_Mapping(PropertyType.String, DerivedPropertyStatus.NonUCDNonProperty, "idnm"), @@ -118,7 +114,11 @@ public enum UcdProperty { NFKC_Casefold(PropertyType.String, DerivedPropertyStatus.Approved, "NFKC_CF"), NFKC_Simple_Casefold(PropertyType.String, DerivedPropertyStatus.Approved, "NFKC_SCF"), Names_List_Cross_Ref( - PropertyType.String, DerivedPropertyStatus.UCDNonProperty, "Names_List_Cross_Ref"), + PropertyType.String, + DerivedPropertyStatus.UCDNonProperty, + null, + ValueCardinality.Unordered, + "Names_List_Cross_Ref"), Simple_Case_Folding(PropertyType.String, DerivedPropertyStatus.Approved, "scf", "sfc"), Simple_Lowercase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "slc"), Simple_Titlecase_Mapping(PropertyType.String, DerivedPropertyStatus.Approved, "stc"), @@ -128,12 +128,7 @@ public enum UcdProperty { kCompatibilityVariant( PropertyType.String, DerivedPropertyStatus.Approved, "cjkCompatibilityVariant"), kEH_AltSeq(PropertyType.String, DerivedPropertyStatus.Provisional, "kEH_AltSeq"), - kSEAL_MCJK( - PropertyType.String, - DerivedPropertyStatus.Provisional, - null, - ValueCardinality.Unordered, - "kSEAL_MCJK"), + kSEAL_MCJK(PropertyType.String, DerivedPropertyStatus.Provisional, "kSEAL_MCJK"), kSimplifiedVariant( PropertyType.String, DerivedPropertyStatus.Provisional, @@ -205,9 +200,17 @@ public enum UcdProperty { Named_Sequences(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "NS"), Named_Sequences_Prov(PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "NSP"), Names_List_Alias( - PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "Names_List_Alias"), + PropertyType.Miscellaneous, + DerivedPropertyStatus.UCDNonProperty, + null, + ValueCardinality.Unordered, + "Names_List_Alias"), Names_List_Comment( - PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, "Names_List_Comment"), + PropertyType.Miscellaneous, + DerivedPropertyStatus.UCDNonProperty, + null, + ValueCardinality.Unordered, + "Names_List_Comment"), Names_List_Subheader( PropertyType.Miscellaneous, DerivedPropertyStatus.UCDNonProperty, diff --git a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt index c16c3b2c3..4430f167b 100644 --- a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt +++ b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt @@ -76,16 +76,16 @@ Arabic_Shaping_Schematic_Name ; SINGLE_VALUED ; .* CJK_Radical ; ORDERED ; [0-9]{1,3}'{0,3} Do_Not_Emit_Dispreferred ; MULTI_VALUED ; .* Do_Not_Emit_Dispreferred_Type ; MULTI_VALUED ; -Do_Not_Emit_Preferred ; MULTI_VALUED ; .* +Do_Not_Emit_Preferred ; SINGLE_VALUED ; .* Emoji_DCM ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_KDDI ; SINGLE_VALUED ; [0-9A-F]{4} Emoji_SB ; SINGLE_VALUED ; [0-9A-F]{4} emoji_variation_sequence ; SINGLE_VALUED ; text style|emoji style Named_Sequences ; SINGLE_VALUED ; $name Named_Sequences_Prov ; SINGLE_VALUED ; $name -Names_List_Alias ; SINGLE_VALUED ; .* -Names_List_Comment ; SINGLE_VALUED ; .* -Names_List_Cross_Ref ; SINGLE_VALUED ; .* +Names_List_Alias ; MULTI_VALUED ; .* +Names_List_Comment ; MULTI_VALUED ; .* +Names_List_Cross_Ref ; MULTI_VALUED ; .* Names_List_Subheader ; MULTI_VALUED ; .* Names_List_Subheader_Notice ; MULTI_VALUED ; .* Non_Unihan_Numeric_Value ; SINGLE_VALUED ; NaN|$rational @@ -250,7 +250,7 @@ kTGT_Numeric ; SINGLE_VALUED ; NaN|$digit+|$positi ## Seal kSEAL_CCZSrc ; SINGLE_VALUED ; C-\d{5} kSEAL_DYCSrc ; SINGLE_VALUED ; D-\d{5} -kSEAL_MCJK ; MULTI_VALUED ; [0-9A-F]{4,5} +kSEAL_MCJK ; SINGLE_VALUED ; [0-9A-F]{4,5} kSEAL_QJZSrc ; SINGLE_VALUED ; K-\d{5} kSEAL_Rad ; MULTI_VALUED ; \d{1,3}\.[A-F0-9]{4,5} -kSEAL_THXSrc ; SINGLE_VALUED ; TH-\d{5}|TH-(X|Y)\d{3}|KD-[0-9A-F]{5} +kSEAL_THXSrc ; SINGLE_VALUED ; TH-(\d{5}|X\d{3}|Y\d{3}) From 6f0dbd3bb5b1244acad59605aab8eb82ecadb35f Mon Sep 17 00:00:00 2001 From: John Wilcock Date: Fri, 13 Feb 2026 13:21:24 -0800 Subject: [PATCH 20/20] Moved a Tangut property under UAX60 --- .../src/main/resources/org/unicode/props/IndexPropertyRegex.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt index 4430f167b..c5c8d15c8 100644 --- a/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt +++ b/unicodetools/src/main/resources/org/unicode/props/IndexPropertyRegex.txt @@ -195,7 +195,6 @@ kRSJapanese ; EXTENSIBLE ; [1-9]\d{0,2}\.\d{1, kRSKangXi ; EXTENSIBLE ; [1-9]\d{0,2}\.\d{1,2} kRSKanWa ; EXTENSIBLE ; [1-9]\d{0,2}\.\d{1,2} kRSKorean ; EXTENSIBLE ; [1-9]\d{0,2}\.\d{1,2} -kRSTUnicode ; SINGLE_VALUED ; \d+\.\d+ kRSUnicode ; ORDERED ; [1-9]\d{0,2}\'{0,3}\.-?\d{1,2} kSBGY ; MULTI_VALUED ; \d{3}\.[0-7]\d kSemanticVariant ; MULTI_VALUED ; U\+[23]?[0-9A-F]{4}(<[ks][A-Za-z0-9_]+(:[TBZFJ]+)?(,[ks][A-Za-z0-9_]+(:[TBZFJ]+)?)*)? @@ -247,6 +246,7 @@ kNSHU_Reading ; SINGLE_VALUED ; [a-z]+[1-9]\d{0,1} ## Tangut kTGT_MergedSrc ; SINGLE_VALUED ; H2004-[AB]-\d{4}|H2021-\d{6}|L(19(86|97)|20(06|12))-\d{4}|L2008-\d{4}([AB]|-\d{4})?|N1966-\d{3}-\d{2}[0-9A-Z]{1,2}|N5217-\d{2}|N5314-\d{2}|S1968-\d{4}|UTN42-\d{3} kTGT_Numeric ; SINGLE_VALUED ; NaN|$digit+|$positiveDecimal +kTGT_RSUnicode ; SINGLE_VALUED ; \d+\.\d+ ## Seal kSEAL_CCZSrc ; SINGLE_VALUED ; C-\d{5} kSEAL_DYCSrc ; SINGLE_VALUED ; D-\d{5}