1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 16:18:12 +00:00

LibJS: Allow 'T' prefix in time-only strings

This is a normative change in the Temporal spec.

See: f5e8edf
This commit is contained in:
Linus Groh 2021-12-18 20:58:36 +00:00
parent acce65b52c
commit 6da6da73cc
2 changed files with 12 additions and 9 deletions

View file

@ -201,10 +201,10 @@ bool ISO8601Parser::parse_date_time_separator()
|| m_state.lexer.consume_specific('t');
}
// https://tc39.es/proposal-temporal/#prod-DurationTimeDesignator
bool ISO8601Parser::parse_duration_time_designator()
// https://tc39.es/proposal-temporal/#prod-TimeDesignator
bool ISO8601Parser::parse_time_designator()
{
// DurationTimeDesignator : one of
// TimeDesignator : one of
// T t
return m_state.lexer.consume_specific('T')
|| m_state.lexer.consume_specific('t');
@ -812,11 +812,14 @@ bool ISO8601Parser::parse_date_time()
bool ISO8601Parser::parse_calendar_time()
{
// CalendarTime :
// TimeSpec TimeZone[opt] Calendar[opt]
// TimeDesignator[opt] TimeSpec TimeZone[opt] Calendar[opt]
StateTransaction transaction { *this };
(void)parse_time_designator();
if (!parse_time_spec())
return false;
(void)parse_time_zone();
(void)parse_calendar();
transaction.commit();
return true;
}
@ -962,11 +965,11 @@ bool ISO8601Parser::parse_duration_hours_part()
bool ISO8601Parser::parse_duration_time()
{
// DurationTime :
// DurationTimeDesignator DurationHoursPart
// DurationTimeDesignator DurationMinutesPart
// DurationTimeDesignator DurationSecondsPart
// TimeDesignator DurationHoursPart
// TimeDesignator DurationMinutesPart
// TimeDesignator DurationSecondsPart
StateTransaction transaction { *this };
if (!parse_duration_time_designator())
if (!parse_time_designator())
return false;
auto success = parse_duration_hours_part()
|| parse_duration_minutes_part()

View file

@ -90,7 +90,7 @@ public:
[[nodiscard]] bool parse_duration_designator();
[[nodiscard]] bool parse_seconds_designator();
[[nodiscard]] bool parse_date_time_separator();
[[nodiscard]] bool parse_duration_time_designator();
[[nodiscard]] bool parse_time_designator();
[[nodiscard]] bool parse_weeks_designator();
[[nodiscard]] bool parse_years_designator();
[[nodiscard]] bool parse_utc_designator();