mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 13:47:35 +00:00
LibJS: Adjust ISO8601 representation for years between 1 BCE and 999 CE
This is a normative change in the Temporal spec.
See: 39eeecd
This commit is contained in:
parent
cfb04765fa
commit
8e175b4959
3 changed files with 17 additions and 10 deletions
|
@ -499,13 +499,14 @@ String pad_iso_year(i32 y)
|
|||
{
|
||||
// 1. Assert: y is an integer.
|
||||
|
||||
// 2. If y > 999 and y ≤ 9999, then
|
||||
if (y > 999 && y <= 9999) {
|
||||
// a. Return y formatted as a four-digit decimal number.
|
||||
return String::number(y);
|
||||
// 2. If y ≥ 0 and y ≤ 9999, then
|
||||
if (y >= 0 && y <= 9999) {
|
||||
// a. Return y formatted as a four-digit decimal number, padded to the left with zeroes as necessary.
|
||||
return String::formatted("{:04}", y);
|
||||
}
|
||||
// 3. If y ≥ 0, let yearSign be "+"; otherwise, let yearSign be "-".
|
||||
auto year_sign = y >= 0 ? '+' : '-';
|
||||
|
||||
// 3. If y > 0, let yearSign be "+"; otherwise, let yearSign be "-".
|
||||
auto year_sign = y > 0 ? '+' : '-';
|
||||
|
||||
// 4. Let year be abs(y), formatted as a six-digit decimal number, padded to the left with zeroes as necessary.
|
||||
// 5. Return the string-concatenation of yearSign and year.
|
||||
|
|
|
@ -19,10 +19,13 @@ describe("correct behavior", () => {
|
|||
expect(plainDate.toString({ calendarName: "never" })).toBe("2021-07-06");
|
||||
|
||||
plainDate = new Temporal.PlainDate(0, 1, 1);
|
||||
expect(plainDate.toString()).toBe("+000000-01-01");
|
||||
expect(plainDate.toString()).toBe("0000-01-01");
|
||||
|
||||
plainDate = new Temporal.PlainDate(999, 1, 1);
|
||||
expect(plainDate.toString()).toBe("+000999-01-01");
|
||||
expect(plainDate.toString()).toBe("0999-01-01");
|
||||
|
||||
plainDate = new Temporal.PlainDate(9999, 1, 1);
|
||||
expect(plainDate.toString()).toBe("9999-01-01");
|
||||
|
||||
plainDate = new Temporal.PlainDate(12345, 1, 1);
|
||||
expect(plainDate.toString()).toBe("+012345-01-01");
|
||||
|
|
|
@ -21,10 +21,13 @@ describe("correct behavior", () => {
|
|||
expect(plainYearMonth.toString({ calendarName: "never" })).toBe("2021-07-06");
|
||||
|
||||
plainYearMonth = new Temporal.PlainYearMonth(0, 1);
|
||||
expect(plainYearMonth.toString()).toBe("+000000-01");
|
||||
expect(plainYearMonth.toString()).toBe("0000-01");
|
||||
|
||||
plainYearMonth = new Temporal.PlainYearMonth(999, 1);
|
||||
expect(plainYearMonth.toString()).toBe("+000999-01");
|
||||
expect(plainYearMonth.toString()).toBe("0999-01");
|
||||
|
||||
plainYearMonth = new Temporal.PlainYearMonth(9999, 1);
|
||||
expect(plainYearMonth.toString()).toBe("9999-01");
|
||||
|
||||
plainYearMonth = new Temporal.PlainYearMonth(12345, 1);
|
||||
expect(plainYearMonth.toString()).toBe("+012345-01");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue