chrono-node 2.3.4 → 2.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +1 -1
  2. package/dist/common/parsers/AbstractParserWithWordBoundary.js +2 -1
  3. package/dist/index.d.ts +2 -1
  4. package/dist/index.js +3 -1
  5. package/dist/locales/zh/hant/constants.d.ts +28 -0
  6. package/dist/locales/zh/hant/constants.js +52 -0
  7. package/dist/locales/zh/hant/parsers/ZHHantCasualDateParser.d.ts +7 -0
  8. package/dist/locales/zh/hant/parsers/ZHHantCasualDateParser.js +138 -0
  9. package/dist/locales/zh/hant/parsers/ZHHantDateParser.d.ts +6 -0
  10. package/dist/locales/zh/hant/parsers/ZHHantDateParser.js +64 -0
  11. package/dist/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.d.ts +6 -0
  12. package/dist/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js +78 -0
  13. package/dist/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.d.ts +7 -0
  14. package/dist/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js +70 -0
  15. package/dist/locales/zh/hant/parsers/ZHHantTimeExpressionParser.d.ts +6 -0
  16. package/dist/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +438 -0
  17. package/dist/locales/zh/hant/parsers/ZHHantWeekdayParser.d.ts +7 -0
  18. package/dist/locales/zh/hant/parsers/ZHHantWeekdayParser.js +46 -0
  19. package/dist/locales/zh/hant/refiners/ZHHantMergeDateRangeRefiner.d.ts +4 -0
  20. package/dist/locales/zh/hant/refiners/ZHHantMergeDateRangeRefiner.js +12 -0
  21. package/dist/locales/zh/hant/refiners/ZHHantMergeDateTimeRefiner.d.ts +4 -0
  22. package/dist/locales/zh/hant/refiners/ZHHantMergeDateTimeRefiner.js +12 -0
  23. package/dist/locales/zh/index.d.ts +9 -0
  24. package/dist/locales/zh/index.js +49 -0
  25. package/dist/utils/dayjs.js +7 -0
  26. package/package.json +1 -1
  27. package/src/common/parsers/AbstractParserWithWordBoundary.ts +1 -1
  28. package/src/index.ts +2 -1
  29. package/src/locales/zh/hant/constants.ts +53 -0
  30. package/src/locales/zh/hant/parsers/ZHHantCasualDateParser.ts +128 -0
  31. package/src/locales/zh/hant/parsers/ZHHantDateParser.ts +68 -0
  32. package/src/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.ts +81 -0
  33. package/src/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.ts +69 -0
  34. package/src/locales/zh/hant/parsers/ZHHantTimeExpressionParser.ts +424 -0
  35. package/src/locales/zh/hant/parsers/ZHHantWeekdayParser.ts +46 -0
  36. package/src/locales/zh/hant/refiners/ZHHantMergeDateRangeRefiner.ts +7 -0
  37. package/src/locales/zh/hant/refiners/ZHHantMergeDateTimeRefiner.ts +7 -0
  38. package/src/locales/zh/index.ts +63 -0
  39. package/src/utils/dayjs.ts +6 -0
  40. package/test/en/en_time_units_ago.test.ts +16 -0
  41. package/test/en/en_time_units_later.test.ts +6 -0
  42. package/test/zh/zh.test.ts +18 -0
  43. package/test/zh/zh_hant_casual.test.ts +246 -0
  44. package/test/zh/zh_hant_date.test.ts +103 -0
  45. package/test/zh/zh_hant_deadline.test.ts +136 -0
  46. package/test/zh/zh_hant_time_exp.test.ts +182 -0
  47. package/test/zh/zh_hant_weekday.test.ts +132 -0
@@ -1,5 +1,6 @@
1
1
  import * as chrono from "../../src/";
2
2
  import { testSingleCase, testUnexpectedResult } from "../test_util";
3
+ import { Meridiem } from "../../src/";
3
4
 
4
5
  test("Test - Single Expression", function () {
5
6
  testSingleCase(chrono, "5 days ago, we did something", new Date(2012, 7, 10), (result) => {
@@ -31,6 +32,7 @@ test("Test - Single Expression", function () {
31
32
  expect(result.text).toBe("15 minute ago");
32
33
  expect(result.start.get("hour")).toBe(11);
33
34
  expect(result.start.get("minute")).toBe(59);
35
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
34
36
 
35
37
  expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
36
38
  });
@@ -40,6 +42,7 @@ test("Test - Single Expression", function () {
40
42
  expect(result.text).toBe("15 minute earlier");
41
43
  expect(result.start.get("hour")).toBe(11);
42
44
  expect(result.start.get("minute")).toBe(59);
45
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
43
46
 
44
47
  expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
45
48
  });
@@ -49,6 +52,7 @@ test("Test - Single Expression", function () {
49
52
  expect(result.text).toBe("15 minute before");
50
53
  expect(result.start.get("hour")).toBe(11);
51
54
  expect(result.start.get("minute")).toBe(59);
55
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
52
56
 
53
57
  expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
54
58
  });
@@ -58,6 +62,7 @@ test("Test - Single Expression", function () {
58
62
  expect(result.text).toBe("12 hours ago");
59
63
  expect(result.start.get("hour")).toBe(0);
60
64
  expect(result.start.get("minute")).toBe(14);
65
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
61
66
 
62
67
  expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 14));
63
68
  });
@@ -67,6 +72,7 @@ test("Test - Single Expression", function () {
67
72
  expect(result.text).toBe("1h ago");
68
73
  expect(result.start.get("hour")).toBe(11);
69
74
  expect(result.start.get("minute")).toBe(14);
75
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
70
76
  });
71
77
 
72
78
  testSingleCase(chrono, "1hr ago", new Date(2012, 7, 10, 12, 14), (result) => {
@@ -74,6 +80,7 @@ test("Test - Single Expression", function () {
74
80
  expect(result.text).toBe("1hr ago");
75
81
  expect(result.start.get("hour")).toBe(11);
76
82
  expect(result.start.get("minute")).toBe(14);
83
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
77
84
  });
78
85
 
79
86
  testSingleCase(chrono, " half an hour ago", new Date(2012, 7, 10, 12, 14), (result) => {
@@ -81,6 +88,7 @@ test("Test - Single Expression", function () {
81
88
  expect(result.text).toBe("half an hour ago");
82
89
  expect(result.start.get("hour")).toBe(11);
83
90
  expect(result.start.get("minute")).toBe(44);
91
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
84
92
 
85
93
  expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 44));
86
94
  });
@@ -90,6 +98,7 @@ test("Test - Single Expression", function () {
90
98
  expect(result.text).toBe("12 hours ago");
91
99
  expect(result.start.get("hour")).toBe(0);
92
100
  expect(result.start.get("minute")).toBe(14);
101
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
93
102
 
94
103
  expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 14));
95
104
  });
@@ -100,6 +109,7 @@ test("Test - Single Expression", function () {
100
109
  expect(result.start.get("hour")).toBe(12);
101
110
  expect(result.start.get("minute")).toBe(13);
102
111
  expect(result.start.get("second")).toBe(48);
112
+ expect(result.start.get("meridiem")).toBe(Meridiem.PM);
103
113
 
104
114
  expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13, 48));
105
115
  });
@@ -110,6 +120,7 @@ test("Test - Single Expression", function () {
110
120
  expect(result.start.get("hour")).toBe(12);
111
121
  expect(result.start.get("minute")).toBe(13);
112
122
  expect(result.start.get("second")).toBe(57);
123
+ expect(result.start.get("meridiem")).toBe(Meridiem.PM);
113
124
 
114
125
  expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13, 57));
115
126
  });
@@ -131,6 +142,7 @@ test("Test - Single Expression", function () {
131
142
  expect(result.text).toBe("half An hour ago");
132
143
  expect(result.start.get("hour")).toBe(11);
133
144
  expect(result.start.get("minute")).toBe(44);
145
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
134
146
 
135
147
  expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 44));
136
148
  });
@@ -152,6 +164,7 @@ test("Test - Single Expression", function () {
152
164
  expect(result.text).toBe("a min before");
153
165
  expect(result.start.get("hour")).toBe(12);
154
166
  expect(result.start.get("minute")).toBe(13);
167
+ expect(result.start.get("meridiem")).toBe(Meridiem.PM);
155
168
 
156
169
  expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13));
157
170
  });
@@ -213,6 +226,7 @@ test("Test - Nested time ago", function () {
213
226
  expect(result.start.get("day")).toBe(10);
214
227
  expect(result.start.get("hour")).toBe(7);
215
228
  expect(result.start.get("minute")).toBe(1);
229
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
216
230
  });
217
231
 
218
232
  testSingleCase(chrono, "1 day 21 hours ago ", new Date(2012, 7, 10, 22, 30), (result) => {
@@ -220,6 +234,7 @@ test("Test - Nested time ago", function () {
220
234
  expect(result.start.get("day")).toBe(9);
221
235
  expect(result.start.get("hour")).toBe(1);
222
236
  expect(result.start.get("minute")).toBe(30);
237
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
223
238
  });
224
239
 
225
240
  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 () {
228
243
  expect(result.start.get("hour")).toBe(22);
229
244
  expect(result.start.get("minute")).toBe(26);
230
245
  expect(result.start.get("second")).toBe(11);
246
+ expect(result.start.get("meridiem")).toBe(Meridiem.PM);
231
247
  });
232
248
  });
233
249
 
@@ -1,5 +1,6 @@
1
1
  import * as chrono from "../../src/";
2
2
  import { testSingleCase } from "../test_util";
3
+ import { Meridiem } from "../../src/";
3
4
 
4
5
  test("Test - Later Expression", function () {
5
6
  testSingleCase(chrono, "2 days later", new Date(2012, 7, 10, 12), (result) => {
@@ -77,6 +78,7 @@ test("Test - From now Expression", () => {
77
78
  expect(result.text).toBe("15 minute from now");
78
79
  expect(result.start.get("hour")).toBe(12);
79
80
  expect(result.start.get("minute")).toBe(29);
81
+ expect(result.start.get("meridiem")).toBe(Meridiem.PM);
80
82
 
81
83
  expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
82
84
  });
@@ -86,6 +88,7 @@ test("Test - From now Expression", () => {
86
88
  expect(result.text).toBe("15 minutes earlier");
87
89
  expect(result.start.get("hour")).toBe(11);
88
90
  expect(result.start.get("minute")).toBe(59);
91
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
89
92
 
90
93
  expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
91
94
  });
@@ -95,6 +98,7 @@ test("Test - From now Expression", () => {
95
98
  expect(result.text).toBe("15 minute out");
96
99
  expect(result.start.get("hour")).toBe(12);
97
100
  expect(result.start.get("minute")).toBe(29);
101
+ expect(result.start.get("meridiem")).toBe(Meridiem.PM);
98
102
 
99
103
  expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
100
104
  });
@@ -115,6 +119,7 @@ test("Test - From now Expression", () => {
115
119
  expect(result.start.get("day")).toBe(11);
116
120
  expect(result.start.get("hour")).toBe(0);
117
121
  expect(result.start.get("minute")).toBe(14);
122
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
118
123
  });
119
124
 
120
125
  testSingleCase(chrono, " half an hour from now", new Date(2012, 7, 10, 12, 14), (result) => {
@@ -122,6 +127,7 @@ test("Test - From now Expression", () => {
122
127
  expect(result.text).toBe("half an hour from now");
123
128
  expect(result.start.get("hour")).toBe(12);
124
129
  expect(result.start.get("minute")).toBe(44);
130
+ expect(result.start.get("meridiem")).toBe(Meridiem.PM);
125
131
 
126
132
  expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 44));
127
133
  });
@@ -0,0 +1,18 @@
1
+ import * as chrono from "../../src";
2
+ import { testSingleCase } from "../test_util";
3
+
4
+ test("Test - International compatible", () => {
5
+ testSingleCase(chrono.zh, "1994-11-05T08:15:30-05:30", new Date(2012, 7, 8), (result) => {
6
+ expect(result.start).not.toBeNull();
7
+ expect(result.start.get("year")).toBe(1994);
8
+ expect(result.start.get("month")).toBe(11);
9
+ expect(result.start.get("day")).toBe(5);
10
+ expect(result.start.get("hour")).toBe(8);
11
+ expect(result.start.get("minute")).toBe(15);
12
+ expect(result.start.get("second")).toBe(30);
13
+ expect(result.start.get("timezoneOffset")).toBe(-330);
14
+ expect(result.text).toBe("1994-11-05T08:15:30-05:30");
15
+
16
+ expect(result.start).toBeDate(new Date(784043130000));
17
+ });
18
+ });
@@ -0,0 +1,246 @@
1
+ import * as chrono from "../../src";
2
+ import { testSingleCase } from "../test_util";
3
+
4
+ test("Test - Single Expression", function () {
5
+ testSingleCase(chrono.zh.hant, "雞而家全部都係雞", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
6
+ expect(result.index).toBe(1);
7
+ expect(result.text).toBe("而家");
8
+
9
+ expect(result.start).not.toBeNull();
10
+ expect(result.start.get("year")).toBe(2012);
11
+ expect(result.start.get("month")).toBe(8);
12
+ expect(result.start.get("day")).toBe(10);
13
+ expect(result.start.get("hour")).toBe(8);
14
+ expect(result.start.get("minute")).toBe(9);
15
+ expect(result.start.get("second")).toBe(10);
16
+ expect(result.start.get("millisecond")).toBe(11);
17
+
18
+ const resultDate = result.start.date();
19
+ const expectDate = new Date(2012, 7, 10, 8, 9, 10, 11);
20
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
21
+ });
22
+
23
+ testSingleCase(chrono.zh.hant, "雞今日全部都係雞", new Date(2012, 7, 10, 12), (result) => {
24
+ expect(result.index).toBe(1);
25
+ expect(result.text).toBe("今日");
26
+
27
+ expect(result.start).not.toBeNull();
28
+ expect(result.start.get("year")).toBe(2012);
29
+ expect(result.start.get("month")).toBe(8);
30
+ expect(result.start.get("day")).toBe(10);
31
+
32
+ const resultDate = result.start.date();
33
+ const expectDate = new Date(2012, 7, 10, 12);
34
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
35
+ });
36
+
37
+ testSingleCase(chrono.zh.hant, "雞聽日全部都係雞", new Date(2012, 7, 10, 12), (result) => {
38
+ expect(result.index).toBe(1);
39
+ expect(result.text).toBe("聽日");
40
+
41
+ expect(result.start).not.toBeNull();
42
+ expect(result.start.get("year")).toBe(2012);
43
+ expect(result.start.get("month")).toBe(8);
44
+ expect(result.start.get("day")).toBe(11);
45
+
46
+ const resultDate = result.start.date();
47
+ const expectDate = new Date(2012, 7, 11, 12);
48
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
49
+ });
50
+
51
+ testSingleCase(chrono.zh.hant, "雞明天全部都係雞", new Date(2012, 7, 10, 1), (result) => {
52
+ // Say.."Tomorrow" in the late night (1 AM)
53
+ const resultDate = result.start.date();
54
+ const expectDate = new Date(2012, 7, 10, 12);
55
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
56
+ });
57
+
58
+ testSingleCase(chrono.zh.hant, "雞後天凌晨全部都係雞", new Date(2012, 7, 10, 0, 0), (result) => {
59
+ const resultDate = result.start.date();
60
+ const expectDate = new Date(2012, 7, 12, 0, 0);
61
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
62
+ });
63
+
64
+ testSingleCase(chrono.zh.hant, "雞大前天凌晨全部都係雞", new Date(2012, 7, 10, 0, 0), (result) => {
65
+ const resultDate = result.start.date();
66
+ const expectDate = new Date(2012, 7, 7, 0, 0);
67
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
68
+ });
69
+
70
+ testSingleCase(chrono.zh.hant, "雞琴日全部都係雞", new Date(2012, 7, 10, 12), (result) => {
71
+ expect(result.index).toBe(1);
72
+ expect(result.text).toBe("琴日");
73
+
74
+ expect(result.start).not.toBeNull();
75
+ expect(result.start.get("year")).toBe(2012);
76
+ expect(result.start.get("month")).toBe(8);
77
+ expect(result.start.get("day")).toBe(9);
78
+
79
+ const resultDate = result.start.date();
80
+ const expectDate = new Date(2012, 7, 9, 12);
81
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
82
+ });
83
+
84
+ testSingleCase(chrono.zh.hant, "雞昨天晚上全部都係雞", new Date(2012, 7, 10, 12), (result) => {
85
+ expect(result.index).toBe(1);
86
+ expect(result.text).toBe("昨天晚上");
87
+
88
+ expect(result.start).not.toBeNull();
89
+ expect(result.start.get("year")).toBe(2012);
90
+ expect(result.start.get("month")).toBe(8);
91
+ expect(result.start.get("day")).toBe(9);
92
+ expect(result.start.get("hour")).toBe(22);
93
+
94
+ const resultDate = result.start.date();
95
+ const expectDate = new Date(2012, 7, 9, 22);
96
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
97
+ });
98
+
99
+ testSingleCase(chrono.zh.hant, "雞今日朝早全部都係雞", new Date(2012, 7, 10, 12), (result) => {
100
+ expect(result.index).toBe(1);
101
+ expect(result.text).toBe("今日朝早");
102
+
103
+ expect(result.start).not.toBeNull();
104
+ expect(result.start.get("year")).toBe(2012);
105
+ expect(result.start.get("month")).toBe(8);
106
+ expect(result.start.get("day")).toBe(10);
107
+ expect(result.start.get("hour")).toBe(6);
108
+
109
+ const resultDate = result.start.date();
110
+ const expectDate = new Date(2012, 7, 10, 6);
111
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
112
+ });
113
+
114
+ testSingleCase(chrono.zh.hant, "雞晏晝全部都係雞", new Date(2012, 7, 10, 12), (result) => {
115
+ expect(result.index).toBe(1);
116
+ expect(result.text).toBe("晏晝");
117
+
118
+ expect(result.start).not.toBeNull();
119
+ expect(result.start.get("year")).toBe(2012);
120
+ expect(result.start.get("month")).toBe(8);
121
+ expect(result.start.get("day")).toBe(10);
122
+ expect(result.start.get("hour")).toBe(15);
123
+
124
+ const resultDate = result.start.date();
125
+ const expectDate = new Date(2012, 7, 10, 15);
126
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
127
+ });
128
+
129
+ testSingleCase(chrono.zh.hant, "雞今晚全部都係雞", new Date(2012, 7, 10, 12), (result) => {
130
+ expect(result.index).toBe(1);
131
+ expect(result.text).toBe("今晚");
132
+
133
+ expect(result.start).not.toBeNull();
134
+ expect(result.start.get("year")).toBe(2012);
135
+ expect(result.start.get("month")).toBe(8);
136
+ expect(result.start.get("day")).toBe(10);
137
+ expect(result.start.get("hour")).toBe(22);
138
+
139
+ const resultDate = result.start.date();
140
+ const expectDate = new Date(2012, 7, 10, 22);
141
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
142
+ });
143
+ });
144
+
145
+ test("Test - Combined Expression", function () {
146
+ testSingleCase(chrono.zh.hant, "雞今日晏晝5點全部都係雞", new Date(2012, 7, 10, 12), (result) => {
147
+ expect(result.index).toBe(1);
148
+ expect(result.text).toBe("今日晏晝5點");
149
+
150
+ expect(result.start).not.toBeNull();
151
+ expect(result.start.get("year")).toBe(2012);
152
+ expect(result.start.get("month")).toBe(8);
153
+ expect(result.start.get("day")).toBe(10);
154
+ expect(result.start.get("hour")).toBe(17);
155
+
156
+ const resultDate = result.start.date();
157
+ const expectDate = new Date(2012, 7, 10, 17);
158
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
159
+ });
160
+ });
161
+
162
+ test("Test - Casual date range", function () {
163
+ testSingleCase(chrono.zh.hant, "雞今日 - 下禮拜五全部都係雞", new Date(2012, 7, 4, 12), (result) => {
164
+ expect(result.index).toBe(1);
165
+ expect(result.text).toBe("今日 - 下禮拜五");
166
+
167
+ expect(result.start).not.toBeNull();
168
+ expect(result.start.get("year")).toBe(2012);
169
+ expect(result.start.get("month")).toBe(8);
170
+ expect(result.start.get("day")).toBe(4);
171
+ expect(result.start.get("hour")).toBe(12);
172
+
173
+ const resultStartDate = result.start.date();
174
+ const expectStartDate = new Date(2012, 7, 4, 12);
175
+ expect(resultStartDate.getTime()).toBeCloseTo(expectStartDate.getTime());
176
+
177
+ expect(result.end).not.toBeNull();
178
+ expect(result.end.get("year")).toBe(2012);
179
+ expect(result.end.get("month")).toBe(8);
180
+ expect(result.end.get("day")).toBe(10);
181
+ expect(result.end.get("hour")).toBe(12);
182
+
183
+ const resultEndDate = result.end.date();
184
+ const expectEndDate = new Date(2012, 7, 10, 12);
185
+ expect(expectEndDate.getTime()).toBeCloseTo(resultEndDate.getTime());
186
+ });
187
+
188
+ testSingleCase(chrono.zh.hant, "雞今日 - 下禮拜五全部都係雞", new Date(2012, 7, 10, 12), (result) => {
189
+ expect(result.index).toBe(1);
190
+ expect(result.text).toBe("今日 - 下禮拜五");
191
+
192
+ expect(result.start).not.toBeNull();
193
+ expect(result.start.get("year")).toBe(2012);
194
+ expect(result.start.get("month")).toBe(8);
195
+ expect(result.start.get("day")).toBe(10);
196
+ expect(result.start.get("hour")).toBe(12);
197
+
198
+ const resultStartDate = result.start.date();
199
+ const expectStartDate = new Date(2012, 7, 10, 12);
200
+ expect(expectStartDate.getTime()).toBeCloseTo(resultStartDate.getTime());
201
+
202
+ expect(result.end).not.toBeNull();
203
+ expect(result.end.get("year")).toBe(2012);
204
+ expect(result.end.get("month")).toBe(8);
205
+ expect(result.end.get("day")).toBe(17);
206
+ expect(result.end.get("hour")).toBe(12);
207
+
208
+ const resultEndDate = result.end.date();
209
+ const expectEndDate = new Date(2012, 7, 17, 12);
210
+ expect(expectEndDate.getTime()).toBeCloseTo(resultEndDate.getTime());
211
+ });
212
+ });
213
+
214
+ test("Test - Random text", function () {
215
+ testSingleCase(chrono.zh.hant, "今日夜晚", new Date(2012, 1 - 1, 1, 12), (result) => {
216
+ expect(result.text).toBe("今日夜晚");
217
+ expect(result.start.get("year")).toBe(2012);
218
+ expect(result.start.get("month")).toBe(1);
219
+ expect(result.start.get("day")).toBe(1);
220
+ expect(result.start.get("hour")).toBe(22);
221
+ expect(result.start.get("meridiem")).toBe(1);
222
+ });
223
+
224
+ testSingleCase(chrono.zh.hant, "今晚8點正", new Date(2012, 1 - 1, 1, 12), (result) => {
225
+ expect(result.text).toBe("今晚8點正");
226
+ expect(result.start.get("hour")).toBe(20);
227
+ expect(result.start.get("year")).toBe(2012);
228
+ expect(result.start.get("month")).toBe(1);
229
+ expect(result.start.get("day")).toBe(1);
230
+ expect(result.start.get("meridiem")).toBe(1);
231
+ });
232
+
233
+ testSingleCase(chrono.zh.hant, "晚上8點", new Date(2012, 1 - 1, 1, 12), (result) => {
234
+ expect(result.text).toBe("晚上8點");
235
+ expect(result.start.get("hour")).toBe(20);
236
+ expect(result.start.get("year")).toBe(2012);
237
+ expect(result.start.get("month")).toBe(1);
238
+ expect(result.start.get("day")).toBe(1);
239
+ expect(result.start.get("meridiem")).toBe(1);
240
+ });
241
+
242
+ testSingleCase(chrono.zh.hant, "星期四", new Date(), (result) => {
243
+ expect(result.text).toBe("星期四");
244
+ expect(result.start.get("weekday")).toBe(4);
245
+ });
246
+ });
@@ -0,0 +1,103 @@
1
+ import * as chrono from "../../src";
2
+ import { testSingleCase } from "../test_util";
3
+
4
+ test("Test - Single Expression", function () {
5
+ testSingleCase(chrono.zh.hant, "雞2016年9月3號全部都係雞", new Date(2012, 8 - 1, 10), (result) => {
6
+ expect(result.index).toBe(1);
7
+ expect(result.text).toBe("2016年9月3號");
8
+
9
+ expect(result.start).not.toBeNull();
10
+ expect(result.start.get("year")).toBe(2016);
11
+ expect(result.start.get("month")).toBe(9);
12
+ expect(result.start.get("day")).toBe(3);
13
+
14
+ const resultDate = result.start.date();
15
+ const expectDate = new Date(2016, 9 - 1, 3, 12);
16
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
17
+ });
18
+
19
+ testSingleCase(chrono.zh.hant, "雞二零一六年,九月三號全部都係雞", new Date(2012, 8 - 1, 10), (result) => {
20
+ expect(result.index).toBe(1);
21
+ expect(result.text).toBe("二零一六年,九月三號");
22
+
23
+ expect(result.start).not.toBeNull();
24
+ expect(result.start.get("year")).toBe(2016);
25
+ expect(result.start.get("month")).toBe(9);
26
+ expect(result.start.get("day")).toBe(3);
27
+
28
+ const resultDate = result.start.date();
29
+ const expectDate = new Date(2016, 9 - 1, 3, 12);
30
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
31
+ });
32
+
33
+ testSingleCase(chrono.zh.hant, "雞九月三號全部都係雞", new Date(2014, 8 - 1, 10), (result) => {
34
+ expect(result.index).toBe(1);
35
+ expect(result.text).toBe("九月三號");
36
+
37
+ expect(result.start).not.toBeNull();
38
+ expect(result.start.get("year")).toBe(2014);
39
+ expect(result.start.get("month")).toBe(9);
40
+ expect(result.start.get("day")).toBe(3);
41
+
42
+ const resultDate = result.start.date();
43
+ const expectDate = new Date(2014, 9 - 1, 3, 12);
44
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
45
+ });
46
+ });
47
+
48
+ test("Test - Range Expression", function () {
49
+ testSingleCase(chrono.zh.hant, "2016年9月3號-2017年10月24號", new Date(2012, 8 - 1, 10), (result) => {
50
+ expect(result.index).toBe(0);
51
+ console.log(result);
52
+ expect(result.text).toBe("2016年9月3號-2017年10月24號");
53
+
54
+ expect(result.start).not.toBeNull();
55
+ expect(result.start.get("year")).toBe(2016);
56
+ expect(result.start.get("month")).toBe(9);
57
+ expect(result.start.get("day")).toBe(3);
58
+
59
+ {
60
+ const resultDate = result.start.date();
61
+ const expectDate = new Date(2016, 9 - 1, 3, 12);
62
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
63
+ }
64
+
65
+ expect(result.end).not.toBeNull();
66
+ expect(result.end.get("year")).toBe(2017);
67
+ expect(result.end.get("month")).toBe(10);
68
+ expect(result.end.get("day")).toBe(24);
69
+
70
+ {
71
+ const resultDate = result.end.date();
72
+ const expectDate = new Date(2017, 10 - 1, 24, 12);
73
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
74
+ }
75
+ });
76
+
77
+ testSingleCase(chrono.zh.hant, "二零一六年九月三號ー2017年10月24號", new Date(2012, 8 - 1, 10), (result) => {
78
+ expect(result.index).toBe(0);
79
+ expect(result.text).toBe("二零一六年九月三號ー2017年10月24號");
80
+
81
+ expect(result.start).not.toBeNull();
82
+ expect(result.start.get("year")).toBe(2016);
83
+ expect(result.start.get("month")).toBe(9);
84
+ expect(result.start.get("day")).toBe(3);
85
+
86
+ {
87
+ const resultDate = result.start.date();
88
+ const expectDate = new Date(2016, 9 - 1, 3, 12);
89
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
90
+ }
91
+
92
+ expect(result.end).not.toBeNull();
93
+ expect(result.end.get("year")).toBe(2017);
94
+ expect(result.end.get("month")).toBe(10);
95
+ expect(result.end.get("day")).toBe(24);
96
+
97
+ {
98
+ const resultDate = result.end.date();
99
+ const expectDate = new Date(2017, 10 - 1, 24, 12);
100
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
101
+ }
102
+ });
103
+ });
@@ -0,0 +1,136 @@
1
+ import * as chrono from "../../src";
2
+ import { testSingleCase } from "../test_util";
3
+
4
+ test("Test - Single Expression", function () {
5
+ testSingleCase(chrono.zh.hant, "五日內我地有d野做", new Date(2012, 7, 10), (result) => {
6
+ expect(result.index).toBe(0);
7
+ expect(result.text).toBe("五日內");
8
+
9
+ expect(result.start).not.toBeNull();
10
+ expect(result.start.get("year")).toBe(2012);
11
+ expect(result.start.get("month")).toBe(8);
12
+ expect(result.start.get("day")).toBe(15);
13
+
14
+ const resultDate = result.start.date();
15
+ const expectDate = new Date(2012, 8 - 1, 15, 12);
16
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
17
+ });
18
+
19
+ testSingleCase(chrono.zh.hant, "5日之內我地有d野做", new Date(2012, 7, 10), (result) => {
20
+ expect(result.index).toBe(0);
21
+ expect(result.text).toBe("5日之內");
22
+
23
+ expect(result.start).not.toBeNull();
24
+ expect(result.start.get("year")).toBe(2012);
25
+ expect(result.start.get("month")).toBe(8);
26
+ expect(result.start.get("day")).toBe(15);
27
+
28
+ const resultDate = result.start.date();
29
+ const expectDate = new Date(2012, 8 - 1, 15, 12);
30
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
31
+ });
32
+
33
+ testSingleCase(chrono.zh.hant, "十日內我地有d野做", new Date(2012, 7, 10), (result) => {
34
+ expect(result.index).toBe(0);
35
+ expect(result.text).toBe("十日內");
36
+
37
+ expect(result.start).not.toBeNull();
38
+ expect(result.start.get("year")).toBe(2012);
39
+ expect(result.start.get("month")).toBe(8);
40
+ expect(result.start.get("day")).toBe(20);
41
+
42
+ const resultDate = result.start.date();
43
+ const expectDate = new Date(2012, 8 - 1, 20, 12);
44
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
45
+ });
46
+
47
+ testSingleCase(chrono.zh.hant, "五分鐘後", new Date(2012, 7, 10, 12, 14), (result) => {
48
+ expect(result.index).toBe(0);
49
+ expect(result.text).toBe("五分鐘後");
50
+
51
+ const resultDate = result.start.date();
52
+ const expectDate = new Date(2012, 7, 10, 12, 19);
53
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
54
+ });
55
+
56
+ testSingleCase(chrono.zh.hant, "一個鐘之內", new Date(2012, 7, 10, 12, 14), (result) => {
57
+ expect(result.index).toBe(0);
58
+ expect(result.text).toBe("一個鐘之內");
59
+
60
+ const resultDate = result.start.date();
61
+ const expectDate = new Date(2012, 7, 10, 13, 14);
62
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
63
+ });
64
+
65
+ testSingleCase(chrono.zh.hant, "5分鐘之後我就收皮", new Date(2012, 7, 10, 12, 14), (result) => {
66
+ expect(result.index).toBe(0);
67
+ expect(result.text).toBe("5分鐘之後");
68
+
69
+ const resultDate = result.start.date();
70
+ const expectDate = new Date(2012, 7, 10, 12, 19);
71
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
72
+ });
73
+
74
+ testSingleCase(chrono.zh.hant, "係5秒之後你就會收皮", new Date(2012, 7, 10, 12, 14), (result) => {
75
+ expect(result.index).toBe(1);
76
+ expect(result.text).toBe("5秒之後");
77
+
78
+ const resultDate = result.start.date();
79
+ const expectDate = new Date(2012, 7, 10, 12, 14, 5);
80
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
81
+ });
82
+
83
+ testSingleCase(chrono.zh.hant, "半小時之內", new Date(2012, 7, 10, 12, 14), (result) => {
84
+ expect(result.index).toBe(0);
85
+ expect(result.text).toBe("半小時之內");
86
+
87
+ const resultDate = result.start.date();
88
+ const expectDate = new Date(2012, 7, 10, 12, 44);
89
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
90
+ });
91
+
92
+ testSingleCase(chrono.zh.hant, "兩個禮拜內答覆我", new Date(2012, 7, 10, 12, 14), (result) => {
93
+ expect(result.index).toBe(0);
94
+ expect(result.text).toBe("兩個禮拜內");
95
+
96
+ const resultDate = result.start.date();
97
+ const expectDate = new Date(2012, 7, 24, 12);
98
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
99
+ });
100
+
101
+ testSingleCase(chrono.zh.hant, "1個月之內答覆我", new Date(2012, 7, 10, 12, 14), (result) => {
102
+ expect(result.index).toBe(0);
103
+ expect(result.text).toBe("1個月之內");
104
+
105
+ const resultDate = result.start.date();
106
+ const expectDate = new Date(2012, 8, 10, 12);
107
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
108
+ });
109
+
110
+ testSingleCase(chrono.zh.hant, "幾個月之內答覆我", new Date(2012, 7, 10, 12, 14), (result) => {
111
+ expect(result.index).toBe(0);
112
+ expect(result.text).toBe("幾個月之內");
113
+
114
+ const resultDate = result.start.date();
115
+ const expectDate = new Date(2012, 10, 10, 12);
116
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
117
+ });
118
+
119
+ testSingleCase(chrono.zh.hant, "一年內答覆我", new Date(2012, 7, 10, 12, 14), (result) => {
120
+ expect(result.index).toBe(0);
121
+ expect(result.text).toBe("一年內");
122
+
123
+ const resultDate = result.start.date();
124
+ const expectDate = new Date(2013, 7, 10, 12);
125
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
126
+ });
127
+
128
+ testSingleCase(chrono.zh.hant, "1年之內答覆我", new Date(2012, 7, 10, 12, 14), (result) => {
129
+ expect(result.index).toBe(0);
130
+ expect(result.text).toBe("1年之內");
131
+
132
+ const resultDate = result.start.date();
133
+ const expectDate = new Date(2013, 7, 10, 12);
134
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
135
+ });
136
+ });