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
@@ -0,0 +1,182 @@
1
+ import * as chrono from "../../src";
2
+ import { testSingleCase } from "../test_util";
3
+
4
+ test("Test - Single Expression", function () {
5
+ testSingleCase(chrono.zh.hant, "雞上午6點13分全部都係雞", new Date(2012, 7, 10), (result) => {
6
+ expect(result.index).toBe(1);
7
+ expect(result.text).toBe("上午6點13分");
8
+
9
+ expect(result.start).not.toBeNull();
10
+ expect(result.start.get("hour")).toBe(6);
11
+ expect(result.start.get("minute")).toBe(13);
12
+
13
+ const resultDate = result.start.date();
14
+ const expectDate = new Date(2012, 7, 10, 6, 13);
15
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
16
+ });
17
+
18
+ testSingleCase(chrono.zh.hant, "雞後天凌晨全部都係雞", new Date(2012, 7, 10, 0, 0), (result) => {
19
+ expect(result.index).toBe(1);
20
+ expect(result.text).toBe("後天凌晨");
21
+
22
+ const resultDate = result.start.date();
23
+ const expectDate = new Date(2012, 7, 12, 0, 0);
24
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
25
+ });
26
+
27
+ testSingleCase(chrono.zh.hant, "雞大前天凌晨全部都係雞", new Date(2012, 7, 10, 0, 0), (result) => {
28
+ expect(result.index).toBe(1);
29
+ expect(result.text).toBe("大前天凌晨");
30
+
31
+ const resultDate = result.start.date();
32
+ const expectDate = new Date(2012, 7, 7, 0, 0);
33
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
34
+ });
35
+ });
36
+
37
+ test("Test - Range Expression", function () {
38
+ testSingleCase(chrono.zh.hant, "雞由今朝八點十分至下午11點32分全部都係雞", new Date(2012, 7, 10), (result) => {
39
+ expect(result.index).toBe(1);
40
+ expect(result.text).toBe("由今朝八點十分至下午11點32分");
41
+
42
+ expect(result.start).not.toBeNull();
43
+ expect(result.start.get("hour")).toBe(8);
44
+ expect(result.start.get("minute")).toBe(10);
45
+
46
+ expect(result.start.isCertain("day")).toBe(true);
47
+ expect(result.start.isCertain("month")).toBe(true);
48
+ expect(result.start.isCertain("year")).toBe(true);
49
+ expect(result.start.isCertain("hour")).toBe(true);
50
+ expect(result.start.isCertain("minute")).toBe(true);
51
+ expect(result.start.isCertain("second")).toBe(false);
52
+ expect(result.start.isCertain("millisecond")).toBe(false);
53
+
54
+ var resultDate = result.start.date();
55
+ var expectDate = new Date(2012, 7, 10, 8, 10);
56
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
57
+
58
+ expect(result.end).not.toBeNull();
59
+ expect(result.end.get("hour")).toBe(23);
60
+ expect(result.end.get("minute")).toBe(32);
61
+
62
+ expect(result.end.isCertain("day")).toBe(false);
63
+ expect(result.end.isCertain("month")).toBe(false);
64
+ expect(result.end.isCertain("year")).toBe(false);
65
+ expect(result.end.isCertain("hour")).toBe(true);
66
+ expect(result.end.isCertain("minute")).toBe(true);
67
+ expect(result.end.isCertain("second")).toBe(false);
68
+ expect(result.end.isCertain("millisecond")).toBe(false);
69
+
70
+ var resultDate = result.end.date();
71
+ var expectDate = new Date(2012, 7, 10, 23, 32);
72
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
73
+ });
74
+
75
+ testSingleCase(chrono.zh.hant, "6點30pm-11點pm", new Date(2012, 7, 10), (result) => {
76
+ expect(result.index).toBe(0);
77
+ expect(result.text).toBe("6點30pm-11點pm");
78
+
79
+ expect(result.start).not.toBeNull();
80
+ expect(result.start.get("hour")).toBe(18);
81
+ expect(result.start.get("minute")).toBe(30);
82
+ expect(result.start.get("meridiem")).toBe(1);
83
+
84
+ var resultDate = result.start.date();
85
+ var expectDate = new Date(2012, 7, 10, 18, 30);
86
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
87
+
88
+ expect(result.end).not.toBeNull();
89
+ expect(result.end.get("hour")).toBe(23);
90
+ expect(result.end.get("minute")).toBe(0);
91
+ expect(result.end.get("meridiem")).toBe(1);
92
+
93
+ var resultDate = result.end.date();
94
+ var expectDate = new Date(2012, 7, 10, 23, 0);
95
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
96
+ });
97
+ });
98
+
99
+ test("Test - Date + Time Expression", function () {
100
+ testSingleCase(
101
+ chrono.zh.hant,
102
+ "雞二零一八年十一月廿六日下午三時半五十九秒全部都係雞",
103
+ new Date(2012, 7, 10),
104
+ (result) => {
105
+ expect(result.index).toBe(1);
106
+ expect(result.text).toBe("二零一八年十一月廿六日下午三時半五十九秒");
107
+
108
+ expect(result.start.get("year")).toBe(2018);
109
+ expect(result.start.get("month")).toBe(11);
110
+ expect(result.start.get("day")).toBe(26);
111
+ expect(result.start.get("hour")).toBe(15);
112
+ expect(result.start.get("minute")).toBe(30);
113
+ expect(result.start.get("second")).toBe(59);
114
+ expect(result.start.get("millisecond")).toBe(0);
115
+ expect(result.start.isCertain("millisecond")).toBe(false);
116
+
117
+ const resultDate = result.start.date();
118
+ const expectDate = new Date(2018, 11 - 1, 26, 15, 30, 59);
119
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
120
+ }
121
+ );
122
+ });
123
+
124
+ test("Test - Time Expression's Meridiem imply", function () {
125
+ testSingleCase(chrono.zh.hant, "1點pm到3點", new Date(2012, 7, 10), (result) => {
126
+ expect(result.index).toBe(0);
127
+ expect(result.text).toBe("1點pm到3點");
128
+
129
+ expect(result.start.get("year")).toBe(2012);
130
+ expect(result.start.get("month")).toBe(8);
131
+ expect(result.start.get("day")).toBe(10);
132
+ expect(result.start.get("hour")).toBe(13);
133
+ expect(result.start.get("minute")).toBe(0);
134
+ expect(result.start.get("second")).toBe(0);
135
+ expect(result.start.get("millisecond")).toBe(0);
136
+ expect(result.start.get("meridiem")).toBe(1);
137
+ expect(result.start.isCertain("meridiem")).toBe(true);
138
+
139
+ expect(result.end.get("year")).toBe(2012);
140
+ expect(result.end.get("month")).toBe(8);
141
+ expect(result.end.get("day")).toBe(11);
142
+ expect(result.end.get("hour")).toBe(3);
143
+ expect(result.end.get("minute")).toBe(0);
144
+ expect(result.end.get("second")).toBe(0);
145
+ expect(result.end.get("millisecond")).toBe(0);
146
+ expect(result.end.isCertain("meridiem")).toBe(false);
147
+ });
148
+ });
149
+
150
+ test("Test - Random date + time expression", function () {
151
+ testSingleCase(chrono.zh.hant, "2014年, 3月5日晏晝 6 點至 7 點", new Date(2012, 7, 10), (result) => {
152
+ expect(result.text).toBe("2014年, 3月5日晏晝 6 點至 7 點");
153
+ });
154
+
155
+ testSingleCase(chrono.zh.hant, "下星期六凌晨1點30分廿九秒", new Date(2012, 7, 10), (result) => {
156
+ expect(result.text).toBe("下星期六凌晨1點30分廿九秒");
157
+ });
158
+
159
+ testSingleCase(chrono.zh.hant, "尋日朝早六點正", new Date(2012, 7, 10), (result) => {
160
+ expect(result.text).toBe("尋日朝早六點正");
161
+ });
162
+
163
+ testSingleCase(chrono.zh.hant, "六月四日3:00am", new Date(2012, 7, 10), (result) => {
164
+ expect(result.text).toBe("六月四日3:00am");
165
+ });
166
+
167
+ testSingleCase(chrono.zh.hant, "上個禮拜五16時", new Date(2012, 7, 10), (result) => {
168
+ expect(result.text).toBe("上個禮拜五16時");
169
+ });
170
+
171
+ testSingleCase(chrono.zh.hant, "3月17日 20點15", new Date(2012, 7, 10), (result) => {
172
+ expect(result.text).toBe("3月17日 20點15");
173
+ });
174
+
175
+ testSingleCase(chrono.zh.hant, "10點", new Date(2012, 7, 10), (result) => {
176
+ expect(result.text).toBe("10點");
177
+ });
178
+
179
+ testSingleCase(chrono.zh.hant, "中午12點", new Date(2012, 7, 10), (result) => {
180
+ expect(result.start.get("hour")).toBe(12);
181
+ });
182
+ });
@@ -0,0 +1,132 @@
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(2016, 9 - 1, 2), (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(2016);
11
+ expect(result.start.get("month")).toBe(9);
12
+ expect(result.start.get("day")).toBe(1);
13
+ expect(result.start.get("weekday")).toBe(4);
14
+
15
+ expect(result.start.isCertain("day")).toBe(false);
16
+ expect(result.start.isCertain("month")).toBe(false);
17
+ expect(result.start.isCertain("year")).toBe(false);
18
+ expect(result.start.isCertain("weekday")).toBe(true);
19
+
20
+ const resultDate = result.start.date();
21
+ const expectDate = new Date(2016, 9 - 1, 1, 12);
22
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
23
+ });
24
+
25
+ testSingleCase(
26
+ chrono.zh.hant,
27
+ "禮拜四 (forward dates only)",
28
+ new Date(2016, 9 - 1, 2),
29
+ { forwardDate: true },
30
+ (result) => {
31
+ expect(result.index).toBe(0);
32
+ expect(result.text).toBe("禮拜四");
33
+
34
+ expect(result.start).not.toBeNull();
35
+ expect(result.start.get("year")).toBe(2016);
36
+ expect(result.start.get("month")).toBe(9);
37
+ expect(result.start.get("day")).toBe(8);
38
+ expect(result.start.get("weekday")).toBe(4);
39
+
40
+ expect(result.start.isCertain("day")).toBe(false);
41
+ expect(result.start.isCertain("month")).toBe(false);
42
+ expect(result.start.isCertain("year")).toBe(false);
43
+ expect(result.start.isCertain("weekday")).toBe(true);
44
+
45
+ const resultDate = result.start.date();
46
+ const expectDate = new Date(2016, 9 - 1, 8, 12);
47
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
48
+ }
49
+ );
50
+
51
+ testSingleCase(chrono.zh.hant, "禮拜日", new Date(2016, 9 - 1, 2), (result) => {
52
+ expect(result.index).toBe(0);
53
+ expect(result.text).toBe("禮拜日");
54
+
55
+ expect(result.start).not.toBeNull();
56
+ expect(result.start.get("year")).toBe(2016);
57
+ expect(result.start.get("month")).toBe(9);
58
+ expect(result.start.get("day")).toBe(4);
59
+ expect(result.start.get("weekday")).toBe(0);
60
+
61
+ const resultDate = result.start.date();
62
+ const expectDate = new Date(2016, 9 - 1, 4, 12);
63
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
64
+ });
65
+
66
+ testSingleCase(chrono.zh.hant, "雞上個禮拜三全部都係雞", new Date(2016, 9 - 1, 2), (result) => {
67
+ expect(result.index).toBe(1);
68
+ expect(result.text).toBe("上個禮拜三");
69
+
70
+ expect(result.start).not.toBeNull();
71
+ expect(result.start.get("year")).toBe(2016);
72
+ expect(result.start.get("month")).toBe(8);
73
+ expect(result.start.get("day")).toBe(24);
74
+ expect(result.start.get("weekday")).toBe(3);
75
+
76
+ const resultDate = result.start.date();
77
+ const expectDate = new Date(2016, 8 - 1, 24, 12);
78
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
79
+ });
80
+
81
+ testSingleCase(chrono.zh.hant, "雞下星期天全部都係雞", new Date(2016, 9 - 1, 2), (result) => {
82
+ expect(result.index).toBe(1);
83
+ expect(result.text).toBe("下星期天");
84
+
85
+ expect(result.start).not.toBeNull();
86
+ expect(result.start.get("year")).toBe(2016);
87
+ expect(result.start.get("month")).toBe(9);
88
+ expect(result.start.get("day")).toBe(4);
89
+ expect(result.start.get("weekday")).toBe(0);
90
+
91
+ const resultDate = result.start.date();
92
+ const expectDate = new Date(2016, 9 - 1, 4, 12);
93
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
94
+ });
95
+ });
96
+
97
+ test("Test - forward dates only option", function () {
98
+ testSingleCase(chrono.zh.hant, "星期六-星期一", new Date(2016, 9 - 1, 2), { forwardDate: true }, (result) => {
99
+ expect(result.index).toBe(0);
100
+ expect(result.text).toBe("星期六-星期一");
101
+
102
+ expect(result.start).not.toBeNull();
103
+ expect(result.start.get("year")).toBe(2016);
104
+ expect(result.start.get("month")).toBe(9);
105
+ expect(result.start.get("day")).toBe(3);
106
+ expect(result.start.get("weekday")).toBe(6);
107
+
108
+ expect(result.start.isCertain("day")).toBe(false);
109
+ expect(result.start.isCertain("month")).toBe(false);
110
+ expect(result.start.isCertain("year")).toBe(false);
111
+ expect(result.start.isCertain("weekday")).toBe(true);
112
+
113
+ var resultDate = result.start.date();
114
+ var expectDate = new Date(2016, 9 - 1, 3, 12);
115
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
116
+
117
+ expect(result.end).not.toBeNull();
118
+ expect(result.end.get("year")).toBe(2016);
119
+ expect(result.end.get("month")).toBe(9);
120
+ expect(result.end.get("day")).toBe(5);
121
+ expect(result.end.get("weekday")).toBe(1);
122
+
123
+ expect(result.end.isCertain("day")).toBe(false);
124
+ expect(result.end.isCertain("month")).toBe(false);
125
+ expect(result.end.isCertain("year")).toBe(false);
126
+ expect(result.end.isCertain("weekday")).toBe(true);
127
+
128
+ var resultDate = result.end.date();
129
+ var expectDate = new Date(2016, 9 - 1, 5, 12);
130
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
131
+ });
132
+ });