tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

shell.js (1406B)


      1 /*---
      2 defines: [ISOFields, assertSameISOFields]
      3 allow_unused: True
      4 ---*/
      5 
      6 function ISOFields(monthDay) {
      7  let re = /^(?<year>-?\d{4,6})-(?<month>\d{2})-(?<day>\d{2})\[u-ca=(?<calendar>[\w\-]+)\]$/;
      8 
      9  let str = monthDay.toString({calendarName: "always"});
     10  let match = str.match(re);
     11  assertEq(match !== null, true, `can't match: ${str}`);
     12 
     13  let {year, month, day, calendar} = match.groups;
     14  let isoYear = Number(year);
     15  let isoMonth = Number(month);
     16  let isoDay = Number(day);
     17 
     18  let date = Temporal.PlainDate.from(str);
     19  let isoDate = date.withCalendar("iso8601");
     20 
     21  assertEq(calendar, date.calendarId);
     22  assertEq(isoYear, isoDate.year);
     23  assertEq(isoMonth, isoDate.month);
     24  assertEq(isoDay, isoDate.day);
     25 
     26  return {
     27    isoYear,
     28    isoMonth,
     29    isoDay,
     30    calendar,
     31  };
     32 }
     33 
     34 function assertSameISOFields(actual, expected) {
     35  let actualFields = ISOFields(actual);
     36  let expectedFields = ISOFields(expected);
     37 
     38  assertEq(typeof actualFields.isoYear, "number");
     39  assertEq(typeof actualFields.isoMonth, "number");
     40  assertEq(typeof actualFields.isoDay, "number");
     41 
     42  assertEq(actualFields.isoMonth > 0, true);
     43  assertEq(actualFields.isoDay > 0, true);
     44 
     45  assertEq(actualFields.isoYear, expectedFields.isoYear);
     46  assertEq(actualFields.isoMonth, expectedFields.isoMonth);
     47  assertEq(actualFields.isoDay, expectedFields.isoDay);
     48  assertEq(actualFields.calendar, expectedFields.calendar);
     49 }