Skip to content

Commit c4cd375

Browse files
author
Wanasit Tanakitrungruang
committedDec 28, 2021
New: assign meridium on relative time parsing
1 parent 95df8dc commit c4cd375

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed
 

‎src/utils/dayjs.ts

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ParsingComponents } from "../results";
22
import dayjs from "dayjs";
3+
import { Meridiem } from "../index";
34

45
export function assignTheNextDay(component: ParsingComponents, targetDayJs: dayjs.Dayjs) {
56
targetDayJs = targetDayJs.add(1, "day");
@@ -18,6 +19,11 @@ export function assignSimilarTime(component: ParsingComponents, targetDayJs: day
1819
component.assign("minute", targetDayJs.minute());
1920
component.assign("second", targetDayJs.second());
2021
component.assign("millisecond", targetDayJs.millisecond());
22+
if (component.get("hour") < 12) {
23+
component.assign("meridiem", Meridiem.AM);
24+
} else {
25+
component.assign("meridiem", Meridiem.PM);
26+
}
2127
}
2228

2329
export function implySimilarTime(component: ParsingComponents, targetDayJs: dayjs.Dayjs) {

‎test/en/en_time_units_ago.test.ts

+16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as chrono from "../../src/";
22
import { testSingleCase, testUnexpectedResult } from "../test_util";
3+
import { Meridiem } from "../../src/";
34

45
test("Test - Single Expression", function () {
56
testSingleCase(chrono, "5 days ago, we did something", new Date(2012, 7, 10), (result) => {
@@ -31,6 +32,7 @@ test("Test - Single Expression", function () {
3132
expect(result.text).toBe("15 minute ago");
3233
expect(result.start.get("hour")).toBe(11);
3334
expect(result.start.get("minute")).toBe(59);
35+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
3436

3537
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
3638
});
@@ -40,6 +42,7 @@ test("Test - Single Expression", function () {
4042
expect(result.text).toBe("15 minute earlier");
4143
expect(result.start.get("hour")).toBe(11);
4244
expect(result.start.get("minute")).toBe(59);
45+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
4346

4447
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
4548
});
@@ -49,6 +52,7 @@ test("Test - Single Expression", function () {
4952
expect(result.text).toBe("15 minute before");
5053
expect(result.start.get("hour")).toBe(11);
5154
expect(result.start.get("minute")).toBe(59);
55+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
5256

5357
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
5458
});
@@ -58,6 +62,7 @@ test("Test - Single Expression", function () {
5862
expect(result.text).toBe("12 hours ago");
5963
expect(result.start.get("hour")).toBe(0);
6064
expect(result.start.get("minute")).toBe(14);
65+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
6166

6267
expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 14));
6368
});
@@ -67,20 +72,23 @@ test("Test - Single Expression", function () {
6772
expect(result.text).toBe("1h ago");
6873
expect(result.start.get("hour")).toBe(11);
6974
expect(result.start.get("minute")).toBe(14);
75+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
7076
});
7177

7278
testSingleCase(chrono, "1hr ago", new Date(2012, 7, 10, 12, 14), (result) => {
7379
expect(result.index).toBe(0);
7480
expect(result.text).toBe("1hr ago");
7581
expect(result.start.get("hour")).toBe(11);
7682
expect(result.start.get("minute")).toBe(14);
83+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
7784
});
7885

7986
testSingleCase(chrono, " half an hour ago", new Date(2012, 7, 10, 12, 14), (result) => {
8087
expect(result.index).toBe(3);
8188
expect(result.text).toBe("half an hour ago");
8289
expect(result.start.get("hour")).toBe(11);
8390
expect(result.start.get("minute")).toBe(44);
91+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
8492

8593
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 44));
8694
});
@@ -90,6 +98,7 @@ test("Test - Single Expression", function () {
9098
expect(result.text).toBe("12 hours ago");
9199
expect(result.start.get("hour")).toBe(0);
92100
expect(result.start.get("minute")).toBe(14);
101+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
93102

94103
expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 14));
95104
});
@@ -100,6 +109,7 @@ test("Test - Single Expression", function () {
100109
expect(result.start.get("hour")).toBe(12);
101110
expect(result.start.get("minute")).toBe(13);
102111
expect(result.start.get("second")).toBe(48);
112+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
103113

104114
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13, 48));
105115
});
@@ -110,6 +120,7 @@ test("Test - Single Expression", function () {
110120
expect(result.start.get("hour")).toBe(12);
111121
expect(result.start.get("minute")).toBe(13);
112122
expect(result.start.get("second")).toBe(57);
123+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
113124

114125
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13, 57));
115126
});
@@ -131,6 +142,7 @@ test("Test - Single Expression", function () {
131142
expect(result.text).toBe("half An hour ago");
132143
expect(result.start.get("hour")).toBe(11);
133144
expect(result.start.get("minute")).toBe(44);
145+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
134146

135147
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 44));
136148
});
@@ -152,6 +164,7 @@ test("Test - Single Expression", function () {
152164
expect(result.text).toBe("a min before");
153165
expect(result.start.get("hour")).toBe(12);
154166
expect(result.start.get("minute")).toBe(13);
167+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
155168

156169
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13));
157170
});
@@ -213,13 +226,15 @@ test("Test - Nested time ago", function () {
213226
expect(result.start.get("day")).toBe(10);
214227
expect(result.start.get("hour")).toBe(7);
215228
expect(result.start.get("minute")).toBe(1);
229+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
216230
});
217231

218232
testSingleCase(chrono, "1 day 21 hours ago ", new Date(2012, 7, 10, 22, 30), (result) => {
219233
expect(result.text).toBe("1 day 21 hours ago");
220234
expect(result.start.get("day")).toBe(9);
221235
expect(result.start.get("hour")).toBe(1);
222236
expect(result.start.get("minute")).toBe(30);
237+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
223238
});
224239

225240
testSingleCase(chrono, "3 min 49 sec ago ", new Date(2012, 7, 10, 22, 30), (result) => {
@@ -228,6 +243,7 @@ test("Test - Nested time ago", function () {
228243
expect(result.start.get("hour")).toBe(22);
229244
expect(result.start.get("minute")).toBe(26);
230245
expect(result.start.get("second")).toBe(11);
246+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
231247
});
232248
});
233249

‎test/en/en_time_units_later.test.ts

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as chrono from "../../src/";
22
import { testSingleCase } from "../test_util";
3+
import { Meridiem } from "../../src/";
34

45
test("Test - Later Expression", function () {
56
testSingleCase(chrono, "2 days later", new Date(2012, 7, 10, 12), (result) => {
@@ -77,6 +78,7 @@ test("Test - From now Expression", () => {
7778
expect(result.text).toBe("15 minute from now");
7879
expect(result.start.get("hour")).toBe(12);
7980
expect(result.start.get("minute")).toBe(29);
81+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
8082

8183
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
8284
});
@@ -86,6 +88,7 @@ test("Test - From now Expression", () => {
8688
expect(result.text).toBe("15 minutes earlier");
8789
expect(result.start.get("hour")).toBe(11);
8890
expect(result.start.get("minute")).toBe(59);
91+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
8992

9093
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
9194
});
@@ -95,6 +98,7 @@ test("Test - From now Expression", () => {
9598
expect(result.text).toBe("15 minute out");
9699
expect(result.start.get("hour")).toBe(12);
97100
expect(result.start.get("minute")).toBe(29);
101+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
98102

99103
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
100104
});
@@ -115,13 +119,15 @@ test("Test - From now Expression", () => {
115119
expect(result.start.get("day")).toBe(11);
116120
expect(result.start.get("hour")).toBe(0);
117121
expect(result.start.get("minute")).toBe(14);
122+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
118123
});
119124

120125
testSingleCase(chrono, " half an hour from now", new Date(2012, 7, 10, 12, 14), (result) => {
121126
expect(result.index).toBe(3);
122127
expect(result.text).toBe("half an hour from now");
123128
expect(result.start.get("hour")).toBe(12);
124129
expect(result.start.get("minute")).toBe(44);
130+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
125131

126132
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 44));
127133
});

0 commit comments

Comments
 (0)
Please sign in to comment.