From 2cbe42274d86fbb039c2fa2bf97c1186688a2546 Mon Sep 17 00:00:00 2001 From: Wanasit Tanakitrungruang Date: Fri, 29 Dec 2023 19:01:07 +0900 Subject: [PATCH] Fix: incorrect reference "for the ..." --- src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts | 5 +++++ test/en/en_month.test.ts | 6 ++++++ test/en/en_month_name_middle_endian.test.ts | 7 +++++++ test/en/negative_cases.test.ts | 4 ++++ 4 files changed, 22 insertions(+) diff --git a/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts b/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts index eb4c5631..1ffea93b 100644 --- a/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts +++ b/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts @@ -34,6 +34,11 @@ export default class ENTimeUnitWithinFormatParser extends AbstractParserWithWord } innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents { + // Exclude "for the unit" phases, e.g. "for the year" + if (match[0].match(/^for\s*the\s*\w+/)) { + return null; + } + const timeUnits = parseTimeUnits(match[1]); return ParsingComponents.createRelativeFromReference(context.reference, timeUnits); } diff --git a/test/en/en_month.test.ts b/test/en/en_month.test.ts index 2f39846e..f098001d 100644 --- a/test/en/en_month.test.ts +++ b/test/en/en_month.test.ts @@ -68,6 +68,12 @@ test("Test - Month-Year expression", function () { expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12)); }); + + testSingleCase(chrono, "Statement of comprehensive income for the year ended Dec. 2021", (result) => { + expect(result.start.get("year")).toBe(2021); + expect(result.start.get("month")).toBe(12); + expect(result.text).toBe("Dec. 2021"); + }); }); test("Test - Month-Only expression", function () { diff --git a/test/en/en_month_name_middle_endian.test.ts b/test/en/en_month_name_middle_endian.test.ts index 9391bdb9..97796744 100644 --- a/test/en/en_month_name_middle_endian.test.ts +++ b/test/en/en_month_name_middle_endian.test.ts @@ -153,6 +153,13 @@ test("Test - Single Expression", () => { expect(result.start.get("month")).toBe(1); expect(result.start.get("day")).toBe(20); }); + + testSingleCase(chrono, "Dec. 21", new Date(2012, 7, 10), (result) => { + expect(result.text).toBe("Dec. 21"); + expect(result.start.get("year")).toBe(2012); + expect(result.start.get("month")).toBe(12); + expect(result.start.get("day")).toBe(21); + }); }); test("Test - Single expression with separators", () => { diff --git a/test/en/negative_cases.test.ts b/test/en/negative_cases.test.ts index b6d6b61d..40c77885 100644 --- a/test/en/negative_cases.test.ts +++ b/test/en/negative_cases.test.ts @@ -75,6 +75,10 @@ test("Test - Skip version number pattern", () => { testUnexpectedResult(chrono, "Version: 1.10.30"); }); +test("Test - Skip incorrect reference", () => { + testUnexpectedResult(chrono, "for the year"); +}); + test("Test - Date with version number pattern", () => { testSingleCase(chrono.en, "1.5.3 - 2015-09-24", (result) => { expect(result.text).toBe("2015-09-24");