mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-31 21:29:06 +00:00
LibJS+LibLocale: Replace Unicode keyword lookups with ICU
Note: All of the changes to the test files in this patch are now aligned with both Chrome and Firefox.
This commit is contained in:
parent
a1464342e1
commit
1bcc29d0d1
Notes:
sideshowbarker
2024-07-17 09:56:35 +09:00
Author: https://github.com/trflynn89
Commit: 1bcc29d0d1
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/176
22 changed files with 400 additions and 570 deletions
|
@ -10,6 +10,7 @@
|
|||
#include <LibJS/Runtime/Intl/Locale.h>
|
||||
#include <LibLocale/DateTimeFormat.h>
|
||||
#include <LibLocale/Locale.h>
|
||||
#include <LibLocale/UnicodeKeywords.h>
|
||||
#include <LibTimeZone/TimeZone.h>
|
||||
|
||||
namespace JS::Intl {
|
||||
|
@ -38,7 +39,7 @@ Locale::Locale(Object& prototype)
|
|||
}
|
||||
|
||||
// 1.1.1 CreateArrayFromListOrRestricted ( list , restricted )
|
||||
static NonnullGCPtr<Array> create_array_from_list_or_restricted(VM& vm, Vector<StringView> list, Optional<String> restricted)
|
||||
static NonnullGCPtr<Array> create_array_from_list_or_restricted(VM& vm, Vector<String> list, Optional<String> restricted)
|
||||
{
|
||||
auto& realm = *vm.current_realm();
|
||||
|
||||
|
@ -49,8 +50,8 @@ static NonnullGCPtr<Array> create_array_from_list_or_restricted(VM& vm, Vector<S
|
|||
}
|
||||
|
||||
// 2. Return ! CreateArrayFromList( list ).
|
||||
return Array::create_from<StringView>(realm, list, [&vm](auto value) {
|
||||
return PrimitiveString::create(vm, MUST(String::from_utf8(value)));
|
||||
return Array::create_from<String>(realm, list, [&vm](auto value) {
|
||||
return PrimitiveString::create(vm, move(value));
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -67,7 +68,7 @@ NonnullGCPtr<Array> calendars_of_locale(VM& vm, Locale const& locale_object)
|
|||
VERIFY(::Locale::parse_unicode_locale_id(locale).has_value());
|
||||
|
||||
// 4. Let list be a List of 1 or more unique canonical calendar identifiers, which must be lower case String values conforming to the type sequence from UTS 35 Unicode Locale Identifier, section 3.2, sorted in descending preference of those in common use for date and time formatting in locale.
|
||||
auto list = ::Locale::get_keywords_for_locale(locale, "ca"sv);
|
||||
auto list = ::Locale::available_calendars(locale);
|
||||
|
||||
// 5. Return ! CreateArrayFromListOrRestricted( list, restricted ).
|
||||
return create_array_from_list_or_restricted(vm, move(list), move(restricted));
|
||||
|
@ -86,7 +87,7 @@ NonnullGCPtr<Array> collations_of_locale(VM& vm, Locale const& locale_object)
|
|||
VERIFY(::Locale::parse_unicode_locale_id(locale).has_value());
|
||||
|
||||
// 4. Let list be a List of 1 or more unique canonical collation identifiers, which must be lower case String values conforming to the type sequence from UTS 35 Unicode Locale Identifier, section 3.2, ordered as if an Array of the same values had been sorted, using %Array.prototype.sort% using undefined as comparefn, of those in common use for string comparison in locale. The values "standard" and "search" must be excluded from list.
|
||||
auto list = ::Locale::get_keywords_for_locale(locale, "co"sv);
|
||||
auto list = ::Locale::available_collations(locale);
|
||||
|
||||
// 5. Return ! CreateArrayFromListOrRestricted( list, restricted ).
|
||||
return create_array_from_list_or_restricted(vm, move(list), move(restricted));
|
||||
|
@ -105,7 +106,7 @@ NonnullGCPtr<Array> hour_cycles_of_locale(VM& vm, Locale const& locale_object)
|
|||
VERIFY(::Locale::parse_unicode_locale_id(locale).has_value());
|
||||
|
||||
// 4. Let list be a List of 1 or more unique hour cycle identifiers, which must be lower case String values indicating either the 12-hour format ("h11", "h12") or the 24-hour format ("h23", "h24"), sorted in descending preference of those in common use for date and time formatting in locale.
|
||||
auto list = ::Locale::get_keywords_for_locale(locale, "hc"sv);
|
||||
auto list = ::Locale::available_hour_cycles(locale);
|
||||
|
||||
// 5. Return ! CreateArrayFromListOrRestricted( list, restricted ).
|
||||
return create_array_from_list_or_restricted(vm, move(list), move(restricted));
|
||||
|
@ -124,7 +125,7 @@ NonnullGCPtr<Array> numbering_systems_of_locale(VM& vm, Locale const& locale_obj
|
|||
VERIFY(::Locale::parse_unicode_locale_id(locale).has_value());
|
||||
|
||||
// 4. Let list be a List of 1 or more unique canonical numbering system identifiers, which must be lower case String values conforming to the type sequence from UTS 35 Unicode Locale Identifier, section 3.2, sorted in descending preference of those in common use for formatting numeric values in locale.
|
||||
auto list = ::Locale::get_keywords_for_locale(locale, "nu"sv);
|
||||
auto list = ::Locale::available_number_systems(locale);
|
||||
|
||||
// 5. Return ! CreateArrayFromListOrRestricted( list, restricted ).
|
||||
return create_array_from_list_or_restricted(vm, move(list), move(restricted));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue