1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 06:47:35 +00:00

LibJS: Populate pluralCategories in Intl.PluralRules.resolvedOptions

This commit is contained in:
Timothy Flynn 2022-07-07 12:21:27 -04:00 committed by Linus Groh
parent 670bd066a5
commit f11cb7c075
2 changed files with 31 additions and 7 deletions

View file

@ -8,6 +8,7 @@
#include <LibJS/Runtime/Array.h>
#include <LibJS/Runtime/GlobalObject.h>
#include <LibJS/Runtime/Intl/PluralRulesPrototype.h>
#include <LibUnicode/PluralRules.h>
namespace JS::Intl {
@ -58,11 +59,14 @@ JS_DEFINE_NATIVE_FUNCTION(PluralRulesPrototype::resolved_options)
MUST(options->create_data_property_or_throw(vm.names.maximumSignificantDigits, Value(plural_rules->max_significant_digits())));
// 5. Let pluralCategories be a List of Strings containing all possible results of PluralRuleSelect for the selected locale pr.[[Locale]].
// FIXME: Implement this when the data is available in LibUnicode.
MarkedVector<Value> plural_categories { vm.heap() };
auto available_categories = Unicode::available_plural_categories(plural_rules->locale(), plural_rules->type());
auto* plural_categories = Array::create_from<Unicode::PluralCategory>(global_object, available_categories, [&](auto category) {
return js_string(vm, Unicode::plural_category_to_string(category));
});
// 6. Perform ! CreateDataProperty(options, "pluralCategories", CreateArrayFromList(pluralCategories)).
MUST(options->create_data_property_or_throw(vm.names.pluralCategories, Array::create_from(global_object, plural_categories)));
MUST(options->create_data_property_or_throw(vm.names.pluralCategories, plural_categories));
// 7. Return options.
return options;