Browse Source

LibJS: Convert Intl.DisplayNames to use Unicode::Style

Timothy Flynn 3 years ago
parent
commit
25e67f63a2

+ 0 - 27
Userland/Libraries/LibJS/Runtime/Intl/DisplayNames.cpp

@@ -7,7 +7,6 @@
 #include <LibJS/Runtime/GlobalObject.h>
 #include <LibJS/Runtime/Intl/AbstractOperations.h>
 #include <LibJS/Runtime/Intl/DisplayNames.h>
-#include <LibUnicode/Locale.h>
 
 namespace JS::Intl {
 
@@ -17,32 +16,6 @@ DisplayNames::DisplayNames(Object& prototype)
 {
 }
 
-void DisplayNames::set_style(StringView style)
-{
-    if (style == "narrow"sv)
-        m_style = Style::Narrow;
-    else if (style == "short"sv)
-        m_style = Style::Short;
-    else if (style == "long"sv)
-        m_style = Style::Long;
-    else
-        VERIFY_NOT_REACHED();
-}
-
-StringView DisplayNames::style_string() const
-{
-    switch (m_style) {
-    case Style::Narrow:
-        return "narrow"sv;
-    case Style::Short:
-        return "short"sv;
-    case Style::Long:
-        return "long"sv;
-    default:
-        VERIFY_NOT_REACHED();
-    }
-}
-
 void DisplayNames::set_type(StringView type)
 {
     if (type == "language"sv)

+ 5 - 11
Userland/Libraries/LibJS/Runtime/Intl/DisplayNames.h

@@ -10,19 +10,13 @@
 #include <AK/String.h>
 #include <AK/StringView.h>
 #include <LibJS/Runtime/Object.h>
+#include <LibUnicode/Locale.h>
 
 namespace JS::Intl {
 
 class DisplayNames final : public Object {
     JS_OBJECT(DisplayNames, Object);
 
-    enum class Style {
-        Invalid,
-        Narrow,
-        Short,
-        Long,
-    };
-
     enum class Type {
         Invalid,
         Language,
@@ -51,9 +45,9 @@ public:
     String const& locale() const { return m_locale; }
     void set_locale(String locale) { m_locale = move(locale); }
 
-    Style style() const { return m_style; }
-    void set_style(StringView style);
-    StringView style_string() const;
+    Unicode::Style style() const { return m_style; }
+    void set_style(StringView style) { m_style = Unicode::style_from_string(style); }
+    StringView style_string() const { return Unicode::style_to_string(m_style); }
 
     Type type() const { return m_type; }
     void set_type(StringView type);
@@ -70,7 +64,7 @@ public:
 
 private:
     String m_locale;                                 // [[Locale]]
-    Style m_style { Style::Invalid };                // [[Style]]
+    Unicode::Style m_style { Unicode::Style::Long }; // [[Style]]
     Type m_type { Type::Invalid };                   // [[Type]]
     Fallback m_fallback { Fallback::Invalid };       // [[Fallback]]
     Optional<LanguageDisplay> m_language_display {}; // [[LanguageDisplay]]

+ 6 - 6
Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesPrototype.cpp

@@ -73,13 +73,13 @@ JS_DEFINE_NATIVE_FUNCTION(DisplayNamesPrototype::of)
         break;
     case DisplayNames::Type::Currency:
         switch (display_names->style()) {
-        case DisplayNames::Style::Long:
+        case Unicode::Style::Long:
             result = Unicode::get_locale_long_currency_mapping(display_names->locale(), code.as_string().string());
             break;
-        case DisplayNames::Style::Short:
+        case Unicode::Style::Short:
             result = Unicode::get_locale_short_currency_mapping(display_names->locale(), code.as_string().string());
             break;
-        case DisplayNames::Style::Narrow:
+        case Unicode::Style::Narrow:
             result = Unicode::get_locale_narrow_currency_mapping(display_names->locale(), code.as_string().string());
             break;
         default:
@@ -91,13 +91,13 @@ JS_DEFINE_NATIVE_FUNCTION(DisplayNamesPrototype::of)
         break;
     case DisplayNames::Type::DateTimeField:
         switch (display_names->style()) {
-        case DisplayNames::Style::Long:
+        case Unicode::Style::Long:
             result = Unicode::get_locale_long_date_field_mapping(display_names->locale(), code.as_string().string());
             break;
-        case DisplayNames::Style::Short:
+        case Unicode::Style::Short:
             result = Unicode::get_locale_short_date_field_mapping(display_names->locale(), code.as_string().string());
             break;
-        case DisplayNames::Style::Narrow:
+        case Unicode::Style::Narrow:
             result = Unicode::get_locale_narrow_date_field_mapping(display_names->locale(), code.as_string().string());
             break;
         default: