Skip to content

Commit

Permalink
LibJS+LibLocale: Replace plural rules selection with ICU
Browse files Browse the repository at this point in the history
This uses ICU for all of the Intl.PluralRules prototypes, which lets us
remove all data from our plural rules generator.

Plural rules depend directly on internal data from the number formatter,
so rather than creating a separate Locale::PluralRules class (which will
make accessing that data awkward), this adds plural rules APIs to the
existing Locale::NumberFormat.
  • Loading branch information
trflynn89 authored and awesomekling committed Jun 15, 2024
1 parent 7f9ccd3 commit 5e2ee44
Show file tree
Hide file tree
Showing 14 changed files with 209 additions and 1,019 deletions.
17 changes: 0 additions & 17 deletions Meta/CMake/locale_data.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ set(CLDR_CORE_PATH "${CLDR_PATH}/${CLDR_CORE_SOURCE}")
set(CLDR_DATES_SOURCE cldr-dates-modern)
set(CLDR_DATES_PATH "${CLDR_PATH}/${CLDR_DATES_SOURCE}")

set(CLDR_LOCALES_SOURCE cldr-localenames-modern)
set(CLDR_LOCALES_PATH "${CLDR_PATH}/${CLDR_LOCALES_SOURCE}")

set(CLDR_NUMBERS_SOURCE cldr-numbers-modern)
set(CLDR_NUMBERS_PATH "${CLDR_PATH}/${CLDR_NUMBERS_SOURCE}")

Expand All @@ -32,7 +29,6 @@ if (ENABLE_UNICODE_DATABASE_DOWNLOAD)
extract_path("${CLDR_PATH}" "${CLDR_ZIP_PATH}" "${CLDR_BCP47_SOURCE}/**" "${CLDR_BCP47_PATH}")
extract_path("${CLDR_PATH}" "${CLDR_ZIP_PATH}" "${CLDR_CORE_SOURCE}/**" "${CLDR_CORE_PATH}")
extract_path("${CLDR_PATH}" "${CLDR_ZIP_PATH}" "${CLDR_DATES_SOURCE}/**" "${CLDR_DATES_PATH}")
extract_path("${CLDR_PATH}" "${CLDR_ZIP_PATH}" "${CLDR_LOCALES_SOURCE}/**" "${CLDR_LOCALES_PATH}")
extract_path("${CLDR_PATH}" "${CLDR_ZIP_PATH}" "${CLDR_NUMBERS_SOURCE}/**" "${CLDR_NUMBERS_PATH}")
else()
message(STATUS "Skipping download of ${CLDR_ZIP_URL}, expecting the archive to have been extracted to ${CLDR_PATH}")
Expand All @@ -41,9 +37,6 @@ if (ENABLE_UNICODE_DATABASE_DOWNLOAD)
set(LOCALE_DATA_HEADER LocaleData.h)
set(LOCALE_DATA_IMPLEMENTATION LocaleData.cpp)

set(PLURAL_RULES_DATA_HEADER PluralRulesData.h)
set(PLURAL_RULES_DATA_IMPLEMENTATION PluralRulesData.cpp)

invoke_generator(
"LocaleData"
Lagom::GenerateLocaleData
Expand All @@ -52,19 +45,9 @@ if (ENABLE_UNICODE_DATABASE_DOWNLOAD)
"${LOCALE_DATA_IMPLEMENTATION}"
arguments -b "${CLDR_BCP47_PATH}" -r "${CLDR_CORE_PATH}" -n "${CLDR_NUMBERS_PATH}" -d "${CLDR_DATES_PATH}"
)
invoke_generator(
"PluralRulesData"
Lagom::GeneratePluralRulesData
"${CLDR_VERSION_FILE}"
"${PLURAL_RULES_DATA_HEADER}"
"${PLURAL_RULES_DATA_IMPLEMENTATION}"
arguments -r "${CLDR_CORE_PATH}" -l "${CLDR_LOCALES_PATH}"
)

set(LOCALE_DATA_SOURCES
${LOCALE_DATA_HEADER}
${LOCALE_DATA_IMPLEMENTATION}
${PLURAL_RULES_DATA_HEADER}
${PLURAL_RULES_DATA_IMPLEMENTATION}
)
endif()
1 change: 0 additions & 1 deletion Meta/Lagom/Tools/CodeGenerators/LibLocale/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
lagom_tool(GenerateLocaleData SOURCES GenerateLocaleData.cpp LIBS LibMain)
lagom_tool(GeneratePluralRulesData SOURCES GeneratePluralRulesData.cpp LIBS LibMain)
Loading

0 comments on commit 5e2ee44

Please sign in to comment.