summaryrefslogtreecommitdiff
path: root/Userland/Libraries
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries')
-rw-r--r--Userland/Libraries/LibUnicode/Forward.h2
-rw-r--r--Userland/Libraries/LibUnicode/Locale.cpp9
-rw-r--r--Userland/Libraries/LibUnicode/Locale.h22
3 files changed, 33 insertions, 0 deletions
diff --git a/Userland/Libraries/LibUnicode/Forward.h b/Userland/Libraries/LibUnicode/Forward.h
index 8d6c43e3ff..5f8a5b5a87 100644
--- a/Userland/Libraries/LibUnicode/Forward.h
+++ b/Userland/Libraries/LibUnicode/Forward.h
@@ -10,6 +10,7 @@
namespace Unicode {
+enum class CompactNumberFormatType : u8;
enum class Condition : u8;
enum class GeneralCategory : u8;
enum class Language : u8;
@@ -27,6 +28,7 @@ struct LanguageID;
struct ListPatterns;
struct LocaleExtension;
struct LocaleID;
+struct NumberFormat;
struct OtherExtension;
struct SpecialCasing;
struct TransformedExtension;
diff --git a/Userland/Libraries/LibUnicode/Locale.cpp b/Userland/Libraries/LibUnicode/Locale.cpp
index 77b3bb23c6..6dbef12266 100644
--- a/Userland/Libraries/LibUnicode/Locale.cpp
+++ b/Userland/Libraries/LibUnicode/Locale.cpp
@@ -812,6 +812,15 @@ Optional<StringView> get_number_system_symbol([[maybe_unused]] StringView locale
#endif
}
+Vector<NumberFormat> get_compact_number_system_formats([[maybe_unused]] StringView locale, [[maybe_unused]] StringView system, [[maybe_unused]] CompactNumberFormatType type)
+{
+#if ENABLE_UNICODE_DATA
+ return Detail::get_compact_number_system_formats(locale, system, type);
+#else
+ return {};
+#endif
+}
+
Optional<ListPatterns> get_locale_list_patterns([[maybe_unused]] StringView locale, [[maybe_unused]] StringView type, [[maybe_unused]] StringView style)
{
#if ENABLE_UNICODE_DATA
diff --git a/Userland/Libraries/LibUnicode/Locale.h b/Userland/Libraries/LibUnicode/Locale.h
index 94c9d9b332..0e3fc302ed 100644
--- a/Userland/Libraries/LibUnicode/Locale.h
+++ b/Userland/Libraries/LibUnicode/Locale.h
@@ -78,6 +78,27 @@ struct LocaleID {
Vector<String> private_use_extensions {};
};
+enum class CompactNumberFormatType : u8 {
+ DecimalLong,
+ DecimalShort,
+};
+
+struct NumberFormat {
+ enum class Plurality : u8 {
+ Other,
+ Zero,
+ Single,
+ One,
+ Two,
+ Few,
+ Many,
+ };
+
+ u8 magnitude { 0 };
+ Plurality plurality { Plurality::Other };
+ StringView format {};
+};
+
struct ListPatterns {
StringView start;
StringView middle;
@@ -141,6 +162,7 @@ Optional<StringView> get_locale_script_mapping(StringView locale, StringView scr
Optional<StringView> get_locale_currency_mapping(StringView locale, StringView currency);
Vector<StringView> get_locale_key_mapping(StringView locale, StringView keyword);
Optional<StringView> get_number_system_symbol(StringView locale, StringView system, StringView symbol);
+Vector<NumberFormat> get_compact_number_system_formats(StringView locale, StringView system, CompactNumberFormatType type);
Optional<ListPatterns> get_locale_list_patterns(StringView locale, StringView type, StringView style);
Optional<StringView> resolve_language_alias(StringView language);