diff --git a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.cpp b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.cpp index 046fb92cca..56809946b4 100644 --- a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.cpp +++ b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.cpp @@ -10,7 +10,6 @@ #include #include #include -#include #include #include @@ -145,34 +144,6 @@ StringView NumberFormat::currency_sign_string() const } } -void NumberFormat::set_unit_display(StringView unit_display) -{ - if (unit_display == "short"sv) - m_unit_display = UnitDisplay::Short; - else if (unit_display == "narrow"sv) - m_unit_display = UnitDisplay::Narrow; - else if (unit_display == "long"sv) - m_unit_display = UnitDisplay::Long; - else - VERIFY_NOT_REACHED(); -} - -StringView NumberFormat::unit_display_string() const -{ - VERIFY(m_unit_display.has_value()); - - switch (*m_unit_display) { - case UnitDisplay::Short: - return "short"sv; - case UnitDisplay::Narrow: - return "narrow"sv; - case UnitDisplay::Long: - return "long"sv; - default: - VERIFY_NOT_REACHED(); - } -} - StringView NumberFormat::rounding_type_string() const { switch (m_rounding_type) { @@ -1293,20 +1264,7 @@ Optional> get_number_format_pattern(NumberFormat& nu // i. Let unit be "fallback". // e. Let patterns be patterns.[[]]. // f. Let patterns be patterns.[[]]. - Vector formats; - - switch (number_format.unit_display()) { - case NumberFormat::UnitDisplay::Long: - formats = Unicode::get_unit_formats(number_format.data_locale(), number_format.unit(), Unicode::Style::Long); - break; - case NumberFormat::UnitDisplay::Short: - formats = Unicode::get_unit_formats(number_format.data_locale(), number_format.unit(), Unicode::Style::Short); - break; - case NumberFormat::UnitDisplay::Narrow: - formats = Unicode::get_unit_formats(number_format.data_locale(), number_format.unit(), Unicode::Style::Narrow); - break; - } - + auto formats = Unicode::get_unit_formats(number_format.data_locale(), number_format.unit(), number_format.unit_display()); patterns = Unicode::select_pattern_with_plurality(formats, number); break; } diff --git a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.h b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.h index d61ab9562a..c19ee700f8 100644 --- a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.h +++ b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.h @@ -11,6 +11,7 @@ #include #include #include +#include #include namespace JS::Intl { @@ -39,12 +40,6 @@ public: Accounting, }; - enum class UnitDisplay { - Short, - Narrow, - Long, - }; - enum class RoundingType { Invalid, SignificantDigits, @@ -116,9 +111,9 @@ public: void set_unit(String unit) { m_unit = move(unit); } bool has_unit_display() const { return m_unit_display.has_value(); } - UnitDisplay unit_display() const { return *m_unit_display; } - StringView unit_display_string() const; - void set_unit_display(StringView unit_display); + Unicode::Style unit_display() const { return *m_unit_display; } + StringView unit_display_string() const { return Unicode::style_to_string(*m_unit_display); } + void set_unit_display(StringView unit_display) { m_unit_display = Unicode::style_from_string(unit_display); } int min_integer_digits() const { return m_min_integer_digits; } void set_min_integer_digits(int min_integer_digits) { m_min_integer_digits = min_integer_digits; } @@ -177,7 +172,7 @@ private: Optional m_currency_display {}; // [[CurrencyDisplay]] Optional m_currency_sign {}; // [[CurrencySign]] Optional m_unit {}; // [[Unit]] - Optional m_unit_display {}; // [[UnitDisplay]] + Optional m_unit_display {}; // [[UnitDisplay]] int m_min_integer_digits { 0 }; // [[MinimumIntegerDigits]] Optional m_min_fraction_digits {}; // [[MinimumFractionDigits]] Optional m_max_fraction_digits {}; // [[MaximumFractionDigits]]