From 8abbd838c9a6a9054ce5a594bf9a6bc72996ed63 Mon Sep 17 00:00:00 2001 From: Wanasit Tanakitrungruang Date: Sun, 25 Dec 2022 13:44:25 +0900 Subject: [PATCH] New: Support timeunit abbriviation (English) --- src/locales/en/constants.ts | 6 ++++++ test/en/en_time_units_ago.test.ts | 17 ++++++++++++++++ test/en/en_time_units_later.test.ts | 30 +++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/src/locales/en/constants.ts b/src/locales/en/constants.ts index 0bc9be37..53ca3c59 100644 --- a/src/locales/en/constants.ts +++ b/src/locales/en/constants.ts @@ -135,9 +135,11 @@ export const ORDINAL_WORD_DICTIONARY: { [word: string]: number } = { }; export const TIME_UNIT_DICTIONARY: { [word: string]: OpUnitType | QUnitType } = { + s: "second", sec: "second", second: "second", seconds: "second", + m: "minute", min: "minute", mins: "minute", minute: "minute", @@ -147,10 +149,14 @@ export const TIME_UNIT_DICTIONARY: { [word: string]: OpUnitType | QUnitType } = hrs: "hour", hour: "hour", hours: "hour", + d: "d", day: "d", days: "d", + w: "w", week: "week", weeks: "week", + mo: "month", + mos: "month", month: "month", months: "month", qtr: "quarter", diff --git a/test/en/en_time_units_ago.test.ts b/test/en/en_time_units_ago.test.ts index 57fa0c24..5fcfc489 100644 --- a/test/en/en_time_units_ago.test.ts +++ b/test/en/en_time_units_ago.test.ts @@ -237,6 +237,14 @@ test("Test - Nested time ago", function () { expect(result.start.get("meridiem")).toBe(Meridiem.AM); }); + testSingleCase(chrono, "1d 21 h 25m ago ", new Date(2012, 7, 10, 22, 30), (result) => { + expect(result.text).toBe("1d 21 h 25m ago"); + expect(result.start.get("day")).toBe(9); + expect(result.start.get("hour")).toBe(1); + expect(result.start.get("minute")).toBe(5); + expect(result.start.get("meridiem")).toBe(Meridiem.AM); + }); + testSingleCase(chrono, "3 min 49 sec ago ", new Date(2012, 7, 10, 22, 30), (result) => { expect(result.text).toBe("3 min 49 sec ago"); expect(result.start.get("day")).toBe(10); @@ -245,6 +253,15 @@ test("Test - Nested time ago", function () { expect(result.start.get("second")).toBe(11); expect(result.start.get("meridiem")).toBe(Meridiem.PM); }); + + testSingleCase(chrono, "3m 49s ago ", new Date(2012, 7, 10, 22, 30), (result) => { + expect(result.text).toBe("3m 49s ago"); + expect(result.start.get("day")).toBe(10); + expect(result.start.get("hour")).toBe(22); + expect(result.start.get("minute")).toBe(26); + expect(result.start.get("second")).toBe(11); + expect(result.start.get("meridiem")).toBe(Meridiem.PM); + }); }); test("Test - Negative cases", function () { diff --git a/test/en/en_time_units_later.test.ts b/test/en/en_time_units_later.test.ts index 520cc49b..fa2b8135 100644 --- a/test/en/en_time_units_later.test.ts +++ b/test/en/en_time_units_later.test.ts @@ -46,6 +46,26 @@ test("Test - Later Expression", function () { expect(result.start).toBeDate(new Date(2012, 7 - 1, 31, 10, 0)); }); + + testSingleCase(chrono, "3w later", new Date(2012, 7 - 1, 10, 10, 0), (result) => { + expect(result.start).not.toBeNull(); + expect(result.start.get("year")).toBe(2012); + expect(result.start.get("month")).toBe(7); + expect(result.start.get("day")).toBe(31); + + expect(result.index).toBe(0); + expect(result.text).toBe("3w later"); + }); + + testSingleCase(chrono, "3mo later", new Date(2012, 7 - 1, 10, 10, 0), (result) => { + expect(result.start).not.toBeNull(); + expect(result.start.get("year")).toBe(2012); + expect(result.start.get("month")).toBe(10); + expect(result.start.get("day")).toBe(10); + + expect(result.index).toBe(0); + expect(result.text).toBe("3mo later"); + }); }); test("Test - From now Expression", () => { @@ -221,6 +241,16 @@ test("Test - From now Expression", () => { expect(result.start).toBeDate(new Date(2012, 7, 10, 14, 10)); }); + + testSingleCase(chrono, "in 1d 2hr 5min", new Date(2012, 7, 10, 12, 40), (result) => { + expect(result.index).toBe(0); + expect(result.text).toBe("in 1d 2hr 5min"); + expect(result.start.get("day")).toBe(11); + expect(result.start.get("hour")).toBe(14); + expect(result.start.get("minute")).toBe(45); + + expect(result.start).toBeDate(new Date(2012, 7, 11, 14, 45)); + }); }); test("Test - Strict mode", function () {