Skip to content

Commit 0d1c9bd

Browse files
author
Wanasit Tanakitrungruang
committedFeb 13, 2022
fix: "after" reference
1 parent f79afcf commit 0d1c9bd

4 files changed

+39
-3
lines changed
 

‎src/locales/en/parsers/ENRelativeDateFormatParser.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/
66
import { matchAnyPattern } from "../../../utils/pattern";
77

88
const PATTERN = new RegExp(
9-
`(this|next|last|past)\\s*(${matchAnyPattern(TIME_UNIT_DICTIONARY)})(?=\\s*)` + "(?=\\W|$)",
9+
`(this|last|past|next|after\\s*this)\\s*(${matchAnyPattern(TIME_UNIT_DICTIONARY)})(?=\\s*)` + "(?=\\W|$)",
1010
"i"
1111
);
1212

@@ -23,7 +23,7 @@ export default class ENRelativeDateFormatParser extends AbstractParserWithWordBo
2323
const unitWord = match[RELATIVE_WORD_GROUP].toLowerCase();
2424
const timeunit = TIME_UNIT_DICTIONARY[unitWord];
2525

26-
if (modifier == "next") {
26+
if (modifier == "next" || modifier.startsWith("after")) {
2727
const timeUnits = {};
2828
timeUnits[timeunit] = 1;
2929
return ParsingComponents.createRelativeFromReference(context.reference, timeUnits);

‎src/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { ParsingComponents } from "../../../results";
44
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
55
import { reverseTimeUnits } from "../../../utils/timeunits";
66

7-
const PATTERN = new RegExp(`(this|last|past|next|\\+|-)\\s*(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i");
7+
const PATTERN = new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i");
88

99
export default class ENTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundaryChecking {
1010
innerPattern(): RegExp {

‎test/en/en_relative.test.ts

+20
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,26 @@ test("Test - Future relative expressions", () => {
135135
expect(result.start.isCertain("millisecond")).toBe(false);
136136
expect(result.start.isCertain("timezoneOffset")).toBe(false);
137137
});
138+
139+
testSingleCase(chrono, "after this year", new Date(2020, 11 - 1, 22, 12, 11, 32, 6), (result, text) => {
140+
expect(result.text).toBe(text);
141+
expect(result.start.get("year")).toBe(2021);
142+
expect(result.start.get("month")).toBe(11);
143+
expect(result.start.get("day")).toBe(22);
144+
expect(result.start.get("hour")).toBe(12);
145+
expect(result.start.get("minute")).toBe(11);
146+
expect(result.start.get("second")).toBe(32);
147+
expect(result.start.get("millisecond")).toBe(6);
148+
149+
expect(result.start.isCertain("year")).toBe(true);
150+
expect(result.start.isCertain("month")).toBe(false);
151+
expect(result.start.isCertain("day")).toBe(false);
152+
expect(result.start.isCertain("hour")).toBe(false);
153+
expect(result.start.isCertain("minute")).toBe(false);
154+
expect(result.start.isCertain("second")).toBe(false);
155+
expect(result.start.isCertain("millisecond")).toBe(false);
156+
expect(result.start.isCertain("timezoneOffset")).toBe(false);
157+
});
138158
});
139159

140160
test("Test - Relative date components' certainty", () => {

‎test/en/en_time_units_casual_relative.test.ts

+16
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,22 @@ test("Test - Positive time units", () => {
3232
expect(result.start.get("day")).toBe(18);
3333
expect(result.start.get("hour")).toBe(12);
3434
});
35+
36+
testSingleCase(chrono, "after a year", new Date(2016, 10 - 1, 1, 12), (result, text) => {
37+
expect(result.text).toBe(text);
38+
expect(result.start.get("year")).toBe(2017);
39+
expect(result.start.get("month")).toBe(10);
40+
expect(result.start.get("day")).toBe(1);
41+
expect(result.start.get("hour")).toBe(12);
42+
});
43+
44+
testSingleCase(chrono, "after an hour", new Date(2016, 10 - 1, 1, 15), (result, text) => {
45+
expect(result.text).toBe(text);
46+
expect(result.start.get("year")).toBe(2016);
47+
expect(result.start.get("month")).toBe(10);
48+
expect(result.start.get("day")).toBe(1);
49+
expect(result.start.get("hour")).toBe(16);
50+
});
3551
});
3652

3753
test("Test - Negative time units", () => {

0 commit comments

Comments
 (0)
Please sign in to comment.