diff options
Diffstat (limited to 'Userland/Libraries/LibJS/Runtime/Intl/PluralRulesConstructor.cpp')
-rw-r--r-- | Userland/Libraries/LibJS/Runtime/Intl/PluralRulesConstructor.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesConstructor.cpp b/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesConstructor.cpp index 95ba0d416e..fa95275c09 100644 --- a/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesConstructor.cpp +++ b/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesConstructor.cpp @@ -5,7 +5,9 @@ */ #include <LibJS/Runtime/AbstractOperations.h> +#include <LibJS/Runtime/Array.h> #include <LibJS/Runtime/GlobalObject.h> +#include <LibJS/Runtime/Intl/AbstractOperations.h> #include <LibJS/Runtime/Intl/PluralRules.h> #include <LibJS/Runtime/Intl/PluralRulesConstructor.h> @@ -26,6 +28,9 @@ void PluralRulesConstructor::initialize(GlobalObject& global_object) // 16.3.1 Intl.PluralRules.prototype, https://tc39.es/ecma402/#sec-intl.pluralrules.prototype define_direct_property(vm.names.prototype, global_object.intl_plural_rules_prototype(), 0); define_direct_property(vm.names.length, Value(0), Attribute::Configurable); + + u8 attr = Attribute::Writable | Attribute::Configurable; + define_native_function(vm.names.supportedLocalesOf, supported_locales_of, 1, attr); } // 16.2.1 Intl.PluralRules ( [ locales [ , options ] ] ), https://tc39.es/ecma402/#sec-intl.pluralrules @@ -51,4 +56,19 @@ ThrowCompletionOr<Object*> PluralRulesConstructor::construct(FunctionObject& new return TRY(initialize_plural_rules(global_object, *plural_rules, locales, options)); } +// 16.3.2 Intl.PluralRules.supportedLocalesOf ( locales [ , options ] ), https://tc39.es/ecma402/#sec-intl.pluralrules.supportedlocalesof +JS_DEFINE_NATIVE_FUNCTION(PluralRulesConstructor::supported_locales_of) +{ + auto locales = vm.argument(0); + auto options = vm.argument(1); + + // 1. Let availableLocales be %PluralRules%.[[AvailableLocales]]. + + // 2. Let requestedLocales be ? CanonicalizeLocaleList(locales). + auto requested_locales = TRY(canonicalize_locale_list(global_object, locales)); + + // 3. Return ? SupportedLocales(availableLocales, requestedLocales, options). + return TRY(supported_locales(global_object, requested_locales, options)); +} + } |