From d3e83c9934241382f05159908c2eb199339f2922 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Wed, 10 Nov 2021 14:49:03 -0500 Subject: [PATCH] LibUnicode: Parse alternate default numbering systems Some locales in the CLDR have alternate default numbering systems listed under "defaultNumberingSystem-alt-*", e.g.: "defaultNumberingSystem": "arab", "defaultNumberingSystem-alt-latn": "latn", "otherNumberingSystems": { "native": "arab" }, We were previously only parsing "defaultNumberingSystem" and "otherNumberingSystems". This odd format appears to be an artifact of converting from XML. --- .../CodeGenerators/LibUnicode/GenerateUnicodeLocale.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibUnicode/GenerateUnicodeLocale.cpp b/Meta/Lagom/Tools/CodeGenerators/LibUnicode/GenerateUnicodeLocale.cpp index 252c393e0d..f7edc9975f 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibUnicode/GenerateUnicodeLocale.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibUnicode/GenerateUnicodeLocale.cpp @@ -454,6 +454,15 @@ static void parse_numeric_keywords(String locale_numbers_path, UnicodeLocaleData keyword_values.append(move(keyword_value)); }); + locale_numbers_object.as_object().for_each_member([&](auto const& key, JsonValue const& value) { + if (!key.starts_with("defaultNumberingSystem-alt-"sv)) + return; + + auto keyword_value = value.as_string(); + if (!keyword_values.contains_slow(keyword_value)) + keyword_values.append(move(keyword_value)); + }); + StringBuilder builder; builder.join(',', keyword_values);