mirror of
https://github.com/RGBCube/serenity
synced 2025-07-28 03:27:44 +00:00
LibTimeZone+Userland: Include Link entries when returning all time zones
We currently only return primary time zones, i.e. time zones that are not a Link. LibJS will require knowledge of Link entries, and whether each entry is or is not a Link.
This commit is contained in:
parent
ddaba88340
commit
0bc401a1d6
6 changed files with 63 additions and 9 deletions
|
@ -87,10 +87,10 @@ static Vector<StringView> available_canonical_time_zones()
|
|||
Vector<StringView> result;
|
||||
|
||||
// 3. For each element name of names, do
|
||||
for (auto name : names) {
|
||||
for (auto const& name : names) {
|
||||
// a. Assert: IsValidTimeZoneName( name ) is true.
|
||||
// b. Let canonical be ! CanonicalizeTimeZoneName( name ).
|
||||
auto canonical = TimeZone::canonicalize_time_zone(name).value();
|
||||
auto canonical = TimeZone::canonicalize_time_zone(name.name).value();
|
||||
|
||||
// c. If result does not contain an element equal to canonical, then
|
||||
if (!result.contains_slow(canonical)) {
|
||||
|
|
|
@ -143,10 +143,10 @@ ErrorOr<void> change_time_zone([[maybe_unused]] StringView time_zone)
|
|||
#endif
|
||||
}
|
||||
|
||||
ReadonlySpan<StringView> __attribute__((weak)) all_time_zones()
|
||||
ReadonlySpan<TimeZoneIdentifier> __attribute__((weak)) all_time_zones()
|
||||
{
|
||||
#if !ENABLE_TIME_ZONE_DATA
|
||||
static constexpr auto utc = Array { "UTC"sv };
|
||||
static constexpr auto utc = Array { TimeZoneIdentifier { "UTC"sv, IsLink::No } };
|
||||
return utc;
|
||||
#else
|
||||
return {};
|
||||
|
|
|
@ -19,6 +19,16 @@
|
|||
|
||||
namespace TimeZone {
|
||||
|
||||
enum class IsLink {
|
||||
No,
|
||||
Yes,
|
||||
};
|
||||
|
||||
struct TimeZoneIdentifier {
|
||||
StringView name;
|
||||
IsLink is_link { IsLink::No };
|
||||
};
|
||||
|
||||
enum class InDST {
|
||||
No,
|
||||
Yes,
|
||||
|
@ -52,7 +62,7 @@ struct Location {
|
|||
StringView system_time_zone();
|
||||
StringView current_time_zone();
|
||||
ErrorOr<void> change_time_zone(StringView time_zone);
|
||||
ReadonlySpan<StringView> all_time_zones();
|
||||
ReadonlySpan<TimeZoneIdentifier> all_time_zones();
|
||||
|
||||
Optional<TimeZone> time_zone_from_string(StringView time_zone);
|
||||
StringView time_zone_to_string(TimeZone time_zone);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue