Skip to content

Commit

Permalink
Fix: recognize time ending that shift to another month
Browse files Browse the repository at this point in the history
  • Loading branch information
Wanasit Tanakitrungruang committed Jan 14, 2023
1 parent 61aeb75 commit dc1b244
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 3 deletions.
9 changes: 6 additions & 3 deletions src/calculation/mergingCalculation.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { ParsingComponents, ParsingResult } from "../results";
import { Meridiem } from "../index";
import { assignSimilarDate, implySimilarDate } from "../utils/dayjs";

export function mergeDateTimeResult(dateResult: ParsingResult, timeResult: ParsingResult): ParsingResult {
const result = dateResult.clone();
Expand All @@ -13,11 +14,13 @@ export function mergeDateTimeResult(dateResult: ParsingResult, timeResult: Parsi
const endDateTime = mergeDateTimeComponent(endDate, endTime);

if (dateResult.end == null && endDateTime.date().getTime() < result.start.date().getTime()) {
// Ex. 9pm - 1am
// For example, "Tuesday 9pm - 1am" the ending should actually be 1am on the next day.
// We need to add to ending by another day.
const nextDayJs = endDateTime.dayjs().add(1, "day");
if (endDateTime.isCertain("day")) {
endDateTime.assign("day", endDateTime.get("day") + 1);
assignSimilarDate(endDateTime, nextDayJs);
} else {
endDateTime.imply("day", endDateTime.get("day") + 1);
implySimilarDate(endDateTime, nextDayJs);
}
}

Expand Down
18 changes: 18 additions & 0 deletions test/en/en_time_exp.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,24 @@ test("Test - Time range's meridiem handling", function () {
});
});

test("Test - Time range to the next day", () => {
testSingleCase(chrono, "December 31, 2022 10:00 pm - 1:00 am", new Date(2017, 7 - 1, 7), (result) => {
expect(result.start.get("day")).toBe(31);
expect(result.start.get("month")).toBe(12);
expect(result.start.get("year")).toBe(2022);
expect(result.start.get("hour")).toBe(22);
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
});

testSingleCase(chrono, "December 31, 2022 10:00 pm - 12:00 am", new Date(2017, 7 - 1, 7), (result) => {
expect(result.start.get("day")).toBe(31);
expect(result.start.get("month")).toBe(12);
expect(result.start.get("year")).toBe(2022);
expect(result.start.get("hour")).toBe(22);
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
});
});

test("Test - Parsing causal positive cases", function () {
testSingleCase(chrono.casual, "at 1", (result) => {
expect(result.text).toBe("at 1");
Expand Down

0 comments on commit dc1b244

Please sign in to comment.