mirror of
https://github.com/RGBCube/serenity
synced 2025-07-28 08:07:44 +00:00
LibJS: Add calendarName: "critical" option to toString() methods
This is a normative change in the Temporal spec.
See: e715a50
This commit is contained in:
parent
192aa75279
commit
4a167cfbec
9 changed files with 73 additions and 15 deletions
|
@ -246,8 +246,8 @@ ThrowCompletionOr<String> to_temporal_offset(VM& vm, Object const* options, Stri
|
|||
// 13.9 ToShowCalendarOption ( normalizedOptions ), https://tc39.es/proposal-temporal/#sec-temporal-toshowcalendaroption
|
||||
ThrowCompletionOr<String> to_show_calendar_option(VM& vm, Object const& normalized_options)
|
||||
{
|
||||
// 1. Return ? GetOption(normalizedOptions, "calendarName", "string", « "auto", "always", "never" », "auto").
|
||||
auto option = TRY(get_option(vm, normalized_options, vm.names.calendarName, OptionType::String, { "auto"sv, "always"sv, "never"sv }, "auto"sv));
|
||||
// 1. Return ? GetOption(normalizedOptions, "calendarName", "string", « "auto", "always", "never", "critical" », "auto").
|
||||
auto option = TRY(get_option(vm, normalized_options, vm.names.calendarName, OptionType::String, { "auto"sv, "always"sv, "never"sv, "critical"sv }, "auto"sv));
|
||||
|
||||
VERIFY(option.is_string());
|
||||
return option.as_string().string();
|
||||
|
|
|
@ -579,19 +579,21 @@ ThrowCompletionOr<String> maybe_format_calendar_annotation(VM& vm, Object const*
|
|||
// 12.2.27 FormatCalendarAnnotation ( id, showCalendar ), https://tc39.es/proposal-temporal/#sec-temporal-formatcalendarannotation
|
||||
String format_calendar_annotation(StringView id, StringView show_calendar)
|
||||
{
|
||||
// 1. Assert: showCalendar is "auto", "always", or "never".
|
||||
VERIFY(show_calendar == "auto"sv || show_calendar == "always"sv || show_calendar == "never"sv);
|
||||
VERIFY(show_calendar == "auto"sv || show_calendar == "always"sv || show_calendar == "never"sv || show_calendar == "critical"sv);
|
||||
|
||||
// 2. If showCalendar is "never", return the empty String.
|
||||
// 1. If showCalendar is "never", return the empty String.
|
||||
if (show_calendar == "never"sv)
|
||||
return String::empty();
|
||||
|
||||
// 3. If showCalendar is "auto" and id is "iso8601", return the empty String.
|
||||
// 2. If showCalendar is "auto" and id is "iso8601", return the empty String.
|
||||
if (show_calendar == "auto"sv && id == "iso8601"sv)
|
||||
return String::empty();
|
||||
|
||||
// 4. Return the string-concatenation of "[u-ca=", id, and "]".
|
||||
return String::formatted("[u-ca={}]", id);
|
||||
// 3. If showCalendar is "critical", let flag be "!"; else, let flag be the empty String.
|
||||
auto flag = show_calendar == "critical"sv ? "!"sv : ""sv;
|
||||
|
||||
// 4. Return the string-concatenation of "[", flag, "u-ca=", id, and "]".
|
||||
return String::formatted("[{}u-ca={}]", flag, id);
|
||||
}
|
||||
|
||||
// 12.2.28 CalendarEquals ( one, two ), https://tc39.es/proposal-temporal/#sec-temporal-calendarequals
|
||||
|
|
|
@ -186,8 +186,8 @@ ThrowCompletionOr<String> temporal_month_day_to_string(VM& vm, PlainMonthDay& mo
|
|||
// 6. Let calendarID be ? ToString(monthDay.[[Calendar]]).
|
||||
auto calendar_id = TRY(Value(&month_day.calendar()).to_string(vm));
|
||||
|
||||
// 7. If showCalendar is "always" or if calendarID is not "iso8601", then
|
||||
if (show_calendar == "always"sv || calendar_id != "iso8601"sv) {
|
||||
// 7. If showCalendar is one of "always" or "critical", or if calendarID is not "iso8601", then
|
||||
if (show_calendar.is_one_of("always"sv, "critical"sv) || calendar_id != "iso8601"sv) {
|
||||
// a. Let year be ! PadISOYear(monthDay.[[ISOYear]]).
|
||||
// b. Set result to the string-concatenation of year, the code unit 0x002D (HYPHEN-MINUS), and result.
|
||||
result = String::formatted("{}-{}", pad_iso_year(month_day.iso_year()), result);
|
||||
|
|
|
@ -213,8 +213,8 @@ ThrowCompletionOr<String> temporal_year_month_to_string(VM& vm, PlainYearMonth&
|
|||
// 6. Let calendarID be ? ToString(yearMonth.[[Calendar]]).
|
||||
auto calendar_id = TRY(Value(&year_month.calendar()).to_string(vm));
|
||||
|
||||
// 7. If showCalendar is "always" or if calendarID is not "iso8601", then
|
||||
if (show_calendar == "always"sv || calendar_id != "iso8601") {
|
||||
// 7. If showCalendar is one of "always" or "critical", or if calendarID is not "iso8601", then
|
||||
if (show_calendar.is_one_of("always"sv, "critical"sv) || calendar_id != "iso8601") {
|
||||
// a. Let day be ToZeroPaddedDecimalString(yearMonth.[[ISODay]], 2).
|
||||
// b. Set result to the string-concatenation of result, the code unit 0x002D (HYPHEN-MINUS), and day.
|
||||
result = String::formatted("{}-{:02}", result, year_month.iso_day());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue