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

LibJS: Implement the Intl.NumberFormat constructor

This commit is contained in:
Timothy Flynn 2021-09-10 11:04:54 -04:00 committed by Linus Groh
parent cf1923edeb
commit e42ba7f748
6 changed files with 840 additions and 1 deletions

View file

@ -20,11 +20,13 @@ using Fallback = Variant<Empty, bool, StringView>;
struct LocaleOptions {
Value locale_matcher;
Optional<String> nu;
};
struct LocaleResult {
String locale;
String data_locale;
Optional<String> nu;
};
struct PatternPartition {
@ -33,6 +35,8 @@ struct PatternPartition {
};
Optional<Unicode::LocaleID> is_structurally_valid_language_tag(StringView locale);
bool is_well_formed_currency_code(StringView currency);
bool is_well_formed_unit_identifier(StringView unit_identifier);
String canonicalize_unicode_locale_id(Unicode::LocaleID& locale);
Vector<String> canonicalize_locale_list(GlobalObject&, Value locales);
Optional<String> best_available_locale(StringView const& locale);
@ -41,6 +45,8 @@ Vector<String> lookup_supported_locales(Vector<String> const& requested_locales)
Array* supported_locales(GlobalObject&, Vector<String> const& requested_locales, Value options);
Object* coerce_options_to_object(GlobalObject& global_object, Value options);
Value get_option(GlobalObject& global_object, Value options, PropertyName const& property, Value::Type type, Vector<StringView> const& values, Fallback fallback);
Optional<int> default_number_option(GlobalObject& global_object, Value value, int minimum, int maximum, Optional<int> fallback);
Optional<int> get_number_option(GlobalObject& global_object, Object& options, PropertyName const& property, int minimum, int maximum, Optional<int> fallback);
Vector<PatternPartition> partition_pattern(StringView pattern);
String insert_unicode_extension_and_canonicalize(Unicode::LocaleID locale_id, Unicode::LocaleExtension extension);
LocaleResult resolve_locale(Vector<String> const& requested_locales, LocaleOptions const& options, Vector<StringView> const& relevant_extension_keys);