mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:47:34 +00:00
LibTimeZone: Perform time-zone-from-string lookups case insensitively
Time zone names in the TZDB are defined to be case insensitive.
This commit is contained in:
parent
b493c2ca90
commit
14535fb67a
2 changed files with 19 additions and 5 deletions
|
@ -235,12 +235,19 @@ namespace TimeZone {
|
||||||
HashValueMap<String> hashes;
|
HashValueMap<String> hashes;
|
||||||
hashes.ensure_capacity(values.size());
|
hashes.ensure_capacity(values.size());
|
||||||
|
|
||||||
for (auto const& value : values)
|
auto hash = [](auto const& value) {
|
||||||
hashes.set(value.hash(), format_identifier(enum_title, value));
|
return CaseInsensitiveStringViewTraits::hash(value);
|
||||||
for (auto const& alias : aliases)
|
};
|
||||||
hashes.set(alias.alias.hash(), format_identifier(enum_title, alias.alias));
|
|
||||||
|
|
||||||
generate_value_from_string(generator, "{}_from_string"sv, enum_title, enum_snake, move(hashes));
|
for (auto const& value : values)
|
||||||
|
hashes.set(hash(value), format_identifier(enum_title, value));
|
||||||
|
for (auto const& alias : aliases)
|
||||||
|
hashes.set(hash(alias.alias), format_identifier(enum_title, alias.alias));
|
||||||
|
|
||||||
|
ValueFromStringOptions options {};
|
||||||
|
options.sensitivity = CaseSensitivity::CaseInsensitive;
|
||||||
|
|
||||||
|
generate_value_from_string(generator, "{}_from_string"sv, enum_title, enum_snake, move(hashes), options);
|
||||||
};
|
};
|
||||||
|
|
||||||
append_from_string("TimeZone"sv, "time_zone"sv, time_zone_data.time_zone_names, time_zone_data.time_zone_aliases);
|
append_from_string("TimeZone"sv, "time_zone"sv, time_zone_data.time_zone_names, time_zone_data.time_zone_aliases);
|
||||||
|
|
|
@ -46,4 +46,11 @@ TEST_CASE(time_zone_from_string_link)
|
||||||
test_link("Universal"sv, "UTC"sv);
|
test_link("Universal"sv, "UTC"sv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE(case_insensitive_time_zone_from_string)
|
||||||
|
{
|
||||||
|
EXPECT_EQ(TimeZone::time_zone_from_string("UTC"sv), TimeZone::TimeZone::UTC);
|
||||||
|
EXPECT_EQ(TimeZone::time_zone_from_string("utc"sv), TimeZone::TimeZone::UTC);
|
||||||
|
EXPECT_EQ(TimeZone::time_zone_from_string("uTc"sv), TimeZone::TimeZone::UTC);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue