chrono-node 1.4.7 → 1.4.9
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.
- package/dist/chrono.js +711 -809
- package/dist/chrono.js.map +1 -1
- package/dist/chrono.min.js +1 -1
- package/dist/chrono.min.js.map +1 -1
- package/package.json +1 -1
- package/src/chrono.js +57 -59
- package/src/options.js +30 -29
- package/src/parsers/en/ENDeadlineFormatParser.js +9 -9
- package/src/result.js +119 -119
- package/test/de/de.test.js +36 -51
- package/test/de/de_casual.test.js +242 -141
- package/test/de/de_dash.test.js +5 -8
- package/test/de/de_deadline.test.js +151 -47
- package/test/de/de_little_endian.test.js +207 -58
- package/test/de/de_time_ago.test.js +167 -52
- package/test/de/de_time_exp.test.js +135 -121
- package/test/de/de_weekday.test.js +94 -31
- package/test/en/en.test.js +118 -89
- package/test/en/en_casual.test.js +149 -134
- package/test/en/en_dash.test.js +17 -11
- package/test/en/en_deadline.test.js +93 -69
- package/test/en/en_inter_std.test.js +28 -7
- package/test/en/en_little_endian.test.js +76 -26
- package/test/en/en_middle_endian.test.js +63 -21
- package/test/en/en_month.test.js +6 -2
- package/test/en/en_option_forward.test.js +120 -112
- package/test/en/en_relative.test.js +155 -172
- package/test/en/en_slash.test.js +156 -115
- package/test/en/en_time_ago.test.js +61 -21
- package/test/en/en_time_exp.test.js +228 -209
- package/test/en/en_time_from_now.test.js +70 -24
- package/test/en/en_time_later.test.js +16 -6
- package/test/en/en_weekday.test.js +39 -13
- package/test/es/es_casual.test.js +143 -120
- package/test/es/es_dash.test.js +7 -8
- package/test/es/es_deadline.test.js +69 -35
- package/test/es/es_little_endian.test.js +250 -145
- package/test/es/es_slash.test.js +17 -12
- package/test/es/es_time_ago.test.js +21 -7
- package/test/es/es_time_exp.test.js +154 -160
- package/test/fr/fr_casual.test.js +153 -124
- package/test/fr/fr_dash.test.js +13 -6
- package/test/fr/fr_deadline.test.js +163 -44
- package/test/fr/fr_little_endian.test.js +262 -81
- package/test/fr/fr_relative.test.js +188 -196
- package/test/fr/fr_slash.test.js +41 -14
- package/test/fr/fr_time_ago.test.js +30 -10
- package/test/fr/fr_time_exp.test.js +619 -567
- package/test/fr/fr_weekday.test.js +24 -8
- package/test/ja/ja_casual.test.js +41 -26
- package/test/ja/ja_standard.test.js +322 -207
- package/test/nl/nl.test.js +18 -20
- package/test/nl/nl_dash.test.js +26 -26
- package/test/nl/nl_little_endian.test.js +100 -51
- package/test/nl/nl_time_exp.test.js +37 -13
- package/test/nl/nl_weekday.test.js +39 -13
- package/test/pt/pt_casual.test.js +222 -156
- package/test/pt/pt_dash.test.js +7 -6
- package/test/pt/pt_deadline.test.js +51 -17
- package/test/pt/pt_little_endian.test.js +251 -144
- package/test/pt/pt_slash.test.js +38 -25
- package/test/pt/pt_time_ago.test.js +128 -80
- package/test/pt/pt_time_exp.test.js +191 -173
- package/test/test_util.js +1 -5
- package/test/zh/zh_hant_casual.test.js +184 -87
- package/test/zh/zh_hant_date.test.js +109 -75
- package/test/zh/zh_hant_deadline.test.js +131 -41
- package/test/zh/zh_hant_time_exp.test.js +184 -141
- package/test/zh/zh_hant_weekday.test.js +64 -22
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
import { testSingleCase } from '../test_util';
|
|
1
|
+
var chrono = require('../../src/chrono');
|
|
3
2
|
|
|
4
3
|
test("Test - Single Expression", function() {
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
var text = "五日內我地有d野做";
|
|
6
|
+
var results = chrono.parse(text, new Date(2012,7,10));
|
|
7
|
+
expect(results.length).toBe(1);
|
|
8
|
+
|
|
9
|
+
var result = results[0];
|
|
10
|
+
if(result){
|
|
7
11
|
expect(result.index).toBe(0);
|
|
8
12
|
expect(result.text).toBe('五日內');
|
|
9
13
|
|
|
@@ -12,12 +16,19 @@ test("Test - Single Expression", function() {
|
|
|
12
16
|
expect(result.start.get('month')).toBe(8);
|
|
13
17
|
expect(result.start.get('day')).toBe(15);
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
var resultDate = result.start.date();
|
|
20
|
+
var expectDate = new Date(2012, 8-1, 15, 12);
|
|
21
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
22
|
+
}
|
|
23
|
+
|
|
17
24
|
|
|
18
25
|
|
|
26
|
+
var text = "5日之內我地有d野做";
|
|
27
|
+
var results = chrono.parse(text, new Date(2012,7,10));
|
|
28
|
+
expect(results.length).toBe(1);
|
|
19
29
|
|
|
20
|
-
|
|
30
|
+
var result = results[0];
|
|
31
|
+
if(result){
|
|
21
32
|
expect(result.index).toBe(0);
|
|
22
33
|
expect(result.text).toBe('5日之內');
|
|
23
34
|
|
|
@@ -26,11 +37,18 @@ test("Test - Single Expression", function() {
|
|
|
26
37
|
expect(result.start.get('month')).toBe(8);
|
|
27
38
|
expect(result.start.get('day')).toBe(15);
|
|
28
39
|
|
|
29
|
-
|
|
30
|
-
|
|
40
|
+
var resultDate = result.start.date();
|
|
41
|
+
var expectDate = new Date(2012, 8-1, 15, 12);
|
|
42
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
43
|
+
}
|
|
31
44
|
|
|
32
45
|
|
|
33
|
-
|
|
46
|
+
var text = "十日內我地有d野做";
|
|
47
|
+
var results = chrono.parse(text, new Date(2012,7,10));
|
|
48
|
+
expect(results.length).toBe(1);
|
|
49
|
+
|
|
50
|
+
var result = results[0];
|
|
51
|
+
if(result){
|
|
34
52
|
expect(result.index).toBe(0);
|
|
35
53
|
expect(result.text).toBe('十日內');
|
|
36
54
|
|
|
@@ -39,85 +57,157 @@ test("Test - Single Expression", function() {
|
|
|
39
57
|
expect(result.start.get('month')).toBe(8);
|
|
40
58
|
expect(result.start.get('day')).toBe(20);
|
|
41
59
|
|
|
42
|
-
|
|
43
|
-
|
|
60
|
+
var resultDate = result.start.date();
|
|
61
|
+
var expectDate = new Date(2012, 8-1, 20, 12);
|
|
62
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
63
|
+
}
|
|
64
|
+
|
|
44
65
|
|
|
66
|
+
var text = "五分鐘後";
|
|
67
|
+
var results = chrono.parse(text, new Date(2012,7,10,12,14));
|
|
68
|
+
expect(results.length).toBe(1);
|
|
45
69
|
|
|
46
|
-
|
|
70
|
+
var result = results[0];
|
|
71
|
+
if(result){
|
|
47
72
|
expect(result.index).toBe(0);
|
|
48
73
|
expect(result.text).toBe('五分鐘後');
|
|
49
74
|
|
|
50
|
-
|
|
51
|
-
|
|
75
|
+
var resultDate = result.start.date();
|
|
76
|
+
var expectDate = new Date(2012,7,10,12,19);
|
|
77
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
78
|
+
}
|
|
52
79
|
|
|
53
|
-
|
|
80
|
+
var text = "一個鐘之內";
|
|
81
|
+
var results = chrono.parse(text, new Date(2012,7,10,12,14));
|
|
82
|
+
expect(results.length).toBe(1);
|
|
83
|
+
|
|
84
|
+
var result = results[0];
|
|
85
|
+
if(result){
|
|
54
86
|
expect(result.index).toBe(0);
|
|
55
87
|
expect(result.text).toBe('一個鐘之內');
|
|
56
88
|
|
|
57
|
-
|
|
58
|
-
|
|
89
|
+
var resultDate = result.start.date();
|
|
90
|
+
var expectDate = new Date(2012,7,10,13,14);
|
|
91
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
var text = "5分鐘之後我就收皮";
|
|
95
|
+
var results = chrono.parse(text, new Date(2012,7,10,12,14));
|
|
96
|
+
expect(results.length).toBe(1);
|
|
59
97
|
|
|
60
|
-
|
|
98
|
+
var result = results[0];
|
|
99
|
+
if(result){
|
|
61
100
|
expect(result.index).toBe(0);
|
|
62
101
|
expect(result.text).toBe('5分鐘之後');
|
|
63
102
|
|
|
64
|
-
|
|
65
|
-
|
|
103
|
+
var resultDate = result.start.date();
|
|
104
|
+
var expectDate = new Date(2012,7,10,12,19);
|
|
105
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
var text = "係5秒之後你就會收皮";
|
|
109
|
+
var results = chrono.parse(text, new Date(2012,7, 10, 12, 14));
|
|
110
|
+
expect(results.length).toBe(1);
|
|
66
111
|
|
|
67
|
-
|
|
112
|
+
var result = results[0];
|
|
113
|
+
if(result){
|
|
68
114
|
expect(result.index).toBe(1);
|
|
69
115
|
expect(result.text).toBe('5秒之後');
|
|
70
116
|
|
|
71
|
-
|
|
72
|
-
|
|
117
|
+
var resultDate = result.start.date();
|
|
118
|
+
var expectDate = new Date(2012, 7, 10, 12, 14, 5);
|
|
119
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
120
|
+
}
|
|
73
121
|
|
|
74
122
|
|
|
75
|
-
|
|
123
|
+
var text = "半小時之內";
|
|
124
|
+
var results = chrono.parse(text, new Date(2012,7,10,12,14));
|
|
125
|
+
expect(results.length).toBe(1);
|
|
126
|
+
|
|
127
|
+
var result = results[0];
|
|
128
|
+
if(result){
|
|
76
129
|
expect(result.index).toBe(0);
|
|
77
130
|
expect(result.text).toBe('半小時之內');
|
|
78
131
|
|
|
79
|
-
|
|
80
|
-
|
|
132
|
+
var resultDate = result.start.date();
|
|
133
|
+
var expectDate = new Date(2012,7,10,12,44);
|
|
134
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
135
|
+
}
|
|
136
|
+
|
|
81
137
|
|
|
138
|
+
var text = "兩個禮拜內答覆我";
|
|
139
|
+
var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14));
|
|
140
|
+
expect(results.length).toBe(1);
|
|
82
141
|
|
|
83
|
-
|
|
142
|
+
var result = results[0];
|
|
143
|
+
if(result){
|
|
84
144
|
expect(result.index).toBe(0);
|
|
85
145
|
expect(result.text).toBe('兩個禮拜內');
|
|
86
146
|
|
|
87
|
-
|
|
88
|
-
|
|
147
|
+
var resultDate = result.start.date();
|
|
148
|
+
var expectDate = new Date(2012, 7, 24, 12);
|
|
149
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
150
|
+
}
|
|
151
|
+
|
|
89
152
|
|
|
153
|
+
var text = "1個月之內答覆我";
|
|
154
|
+
var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14));
|
|
155
|
+
expect(results.length).toBe(1);
|
|
90
156
|
|
|
91
|
-
|
|
157
|
+
var result = results[0];
|
|
158
|
+
if(result){
|
|
92
159
|
expect(result.index).toBe(0);
|
|
93
160
|
expect(result.text).toBe('1個月之內');
|
|
94
161
|
|
|
95
|
-
|
|
96
|
-
|
|
162
|
+
var resultDate = result.start.date();
|
|
163
|
+
var expectDate = new Date(2012, 8, 10, 12);
|
|
164
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
165
|
+
}
|
|
97
166
|
|
|
98
167
|
|
|
99
|
-
|
|
168
|
+
var text = "幾個月之內答覆我";
|
|
169
|
+
var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14));
|
|
170
|
+
expect(results.length).toBe(1);
|
|
171
|
+
|
|
172
|
+
var result = results[0];
|
|
173
|
+
if(result){
|
|
100
174
|
expect(result.index).toBe(0);
|
|
101
175
|
expect(result.text).toBe('幾個月之內');
|
|
102
176
|
|
|
103
|
-
|
|
104
|
-
|
|
177
|
+
var resultDate = result.start.date();
|
|
178
|
+
var expectDate = new Date(2012, 10, 10, 12);
|
|
179
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
180
|
+
}
|
|
181
|
+
|
|
105
182
|
|
|
183
|
+
var text = "一年內答覆我";
|
|
184
|
+
var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14));
|
|
185
|
+
expect(results.length).toBe(1);
|
|
106
186
|
|
|
107
|
-
|
|
187
|
+
var result = results[0];
|
|
188
|
+
if(result){
|
|
108
189
|
expect(result.index).toBe(0);
|
|
109
190
|
expect(result.text).toBe('一年內');
|
|
110
191
|
|
|
111
|
-
|
|
112
|
-
|
|
192
|
+
var resultDate = result.start.date();
|
|
193
|
+
var expectDate = new Date(2013, 7, 10, 12);
|
|
194
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
195
|
+
}
|
|
196
|
+
|
|
113
197
|
|
|
198
|
+
var text = "1年之內答覆我";
|
|
199
|
+
var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14));
|
|
200
|
+
expect(results.length).toBe(1);
|
|
114
201
|
|
|
115
|
-
|
|
202
|
+
var result = results[0];
|
|
203
|
+
if(result){
|
|
116
204
|
expect(result.index).toBe(0);
|
|
117
205
|
expect(result.text).toBe('1年之內');
|
|
118
206
|
|
|
119
|
-
|
|
120
|
-
|
|
207
|
+
var resultDate = result.start.date();
|
|
208
|
+
var expectDate = new Date(2013, 7, 10, 12);
|
|
209
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
210
|
+
}
|
|
121
211
|
|
|
122
212
|
|
|
123
213
|
});
|
|
@@ -1,183 +1,226 @@
|
|
|
1
|
-
|
|
2
|
-
import { testSingleCase } from '../test_util';
|
|
1
|
+
var chrono = require('../../src/chrono');
|
|
3
2
|
|
|
4
3
|
test("Test - Single Expression", function() {
|
|
5
4
|
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
var text = "雞上午6點13分全部都係雞";
|
|
7
|
+
var results = chrono.parse(text, new Date(2012,7,10));
|
|
8
|
+
expect(results.length).toBe(1)
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
expect(result.
|
|
10
|
+
var result = results[0];
|
|
11
|
+
if(result){
|
|
12
|
+
expect(result.index).toBe(1)
|
|
13
|
+
expect(result.text).toBe('上午6點13分')
|
|
14
14
|
|
|
15
|
-
expect(result.start).
|
|
16
|
-
|
|
15
|
+
expect(result.start).not.toBeNull()
|
|
16
|
+
expect(result.start.get('hour')).toBe(6)
|
|
17
|
+
expect(result.start.get('minute')).toBe(13)
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
expect(
|
|
19
|
+
var resultDate = result.start.date();
|
|
20
|
+
var expectDate = new Date(2012, 7, 10, 6, 13);
|
|
21
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
22
|
+
}
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
var text = "雞後天凌晨全部都係雞";
|
|
25
|
+
var results = chrono.parse(text, new Date(2012, 7, 10, 0, 0));
|
|
26
|
+
expect(results.length).toBe(1)
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
expect(result.
|
|
28
|
+
var result = results[0];
|
|
29
|
+
if(result){
|
|
30
|
+
expect(result.index).toBe(1)
|
|
31
|
+
expect(result.text).toBe('後天凌晨')
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
var resultDate = result.start.date();
|
|
34
|
+
var expectDate = new Date(2012, 7, 12, 0, 0);
|
|
35
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
36
|
+
}
|
|
31
37
|
|
|
38
|
+
var text = "雞大前天凌晨全部都係雞";
|
|
39
|
+
var results = chrono.parse(text, new Date(2012, 7, 10, 0, 0));
|
|
40
|
+
expect(results.length).toBe(1)
|
|
32
41
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
testSingleCase(chrono, '雞由今朝八點十分至下午11點32分全部都係雞', new Date(2012,7,10), (result) => {
|
|
38
|
-
expect(result.index).toBe(1);
|
|
39
|
-
expect(result.text).toBe('由今朝八點十分至下午11點32分');
|
|
40
|
-
|
|
41
|
-
expect(result.start).not.toBeNull();
|
|
42
|
-
expect(result.start.get('hour')).toBe(8);
|
|
43
|
-
expect(result.start.get('minute')).toBe(10);
|
|
44
|
-
|
|
45
|
-
expect(result.start.isCertain('day')).toBe(true);
|
|
46
|
-
expect(result.start.isCertain('month')).toBe(true);
|
|
47
|
-
expect(result.start.isCertain('year')).toBe(true);
|
|
48
|
-
expect(result.start.isCertain('hour')).toBe(true);
|
|
49
|
-
expect(result.start.isCertain('minute')).toBe(true);
|
|
50
|
-
expect(result.start.isCertain('second')).toBe(false);
|
|
51
|
-
expect(result.start.isCertain('millisecond')).toBe(false);
|
|
42
|
+
var result = results[0];
|
|
43
|
+
if(result){
|
|
44
|
+
expect(result.index).toBe(1)
|
|
45
|
+
expect(result.text).toBe('大前天凌晨')
|
|
52
46
|
|
|
53
|
-
|
|
47
|
+
var resultDate = result.start.date();
|
|
48
|
+
var expectDate = new Date(2012, 7, 7, 0, 0);
|
|
49
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
50
|
+
}
|
|
54
51
|
|
|
55
|
-
expect(result.end).not.toBeNull();
|
|
56
|
-
expect(result.end.get('hour')).toBe(23);
|
|
57
|
-
expect(result.end.get('minute')).toBe(32);
|
|
58
52
|
|
|
59
|
-
|
|
60
|
-
expect(result.end.isCertain('month')).toBe(false);
|
|
61
|
-
expect(result.end.isCertain('year')).toBe(false);
|
|
62
|
-
expect(result.end.isCertain('hour')).toBe(true);
|
|
63
|
-
expect(result.end.isCertain('minute')).toBe(true);
|
|
64
|
-
expect(result.end.isCertain('second')).toBe(false);
|
|
65
|
-
expect(result.end.isCertain('millisecond')).toBe(false);
|
|
66
|
-
|
|
67
|
-
expect(result.end).toBeDate(new Date(2012, 7, 10, 23, 32));
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
testSingleCase(chrono, '6點30pm-11點pm', new Date(2012,7,10), (result) => {
|
|
71
|
-
expect(result.index).toBe(0);
|
|
72
|
-
expect(result.text).toBe('6點30pm-11點pm');
|
|
73
|
-
|
|
74
|
-
expect(result.start).not.toBeNull();
|
|
75
|
-
expect(result.start.get('hour')).toBe(18);
|
|
76
|
-
expect(result.start.get('minute')).toBe(30);
|
|
77
|
-
expect(result.start.get('meridiem')).toBe(1);
|
|
78
|
-
|
|
79
|
-
expect(result.start).toBeDate(new Date(2012, 7, 10, 18, 30));
|
|
53
|
+
});
|
|
80
54
|
|
|
81
|
-
|
|
82
|
-
expect(result.end.get('hour')).toBe(23);
|
|
83
|
-
expect(result.end.get('minute')).toBe(0);
|
|
84
|
-
expect(result.end.get('meridiem')).toBe(1);
|
|
55
|
+
test("Test - Range Expression", function() {
|
|
85
56
|
|
|
86
|
-
|
|
87
|
-
|
|
57
|
+
var text = "雞由今朝八點十分至下午11點32分全部都係雞";
|
|
58
|
+
var results = chrono.parse(text, new Date(2012,7,10));
|
|
59
|
+
expect(results.length).toBe(1)
|
|
60
|
+
|
|
61
|
+
var result = results[0];
|
|
62
|
+
if(result){
|
|
63
|
+
expect(result.index).toBe(1)
|
|
64
|
+
expect(result.text).toBe('由今朝八點十分至下午11點32分')
|
|
65
|
+
|
|
66
|
+
expect(result.start).not.toBeNull()
|
|
67
|
+
expect(result.start.get('hour')).toBe(8)
|
|
68
|
+
expect(result.start.get('minute')).toBe(10)
|
|
69
|
+
|
|
70
|
+
expect(result.start.isCertain('day')).toBe(true)
|
|
71
|
+
expect(result.start.isCertain('month')).toBe(true)
|
|
72
|
+
expect(result.start.isCertain('year')).toBe(true)
|
|
73
|
+
expect(result.start.isCertain('hour')).toBe(true)
|
|
74
|
+
expect(result.start.isCertain('minute')).toBe(true)
|
|
75
|
+
expect(result.start.isCertain('second')).toBe(false)
|
|
76
|
+
expect(result.start.isCertain('millisecond')).toBe(false)
|
|
77
|
+
|
|
78
|
+
var resultDate = result.start.date();
|
|
79
|
+
var expectDate = new Date(2012, 7, 10, 8, 10);
|
|
80
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
81
|
+
|
|
82
|
+
expect(result.end).not.toBeNull()
|
|
83
|
+
expect(result.end.get('hour')).toBe(23)
|
|
84
|
+
expect(result.end.get('minute')).toBe(32)
|
|
85
|
+
|
|
86
|
+
expect(result.end.isCertain('day')).toBe(false)
|
|
87
|
+
expect(result.end.isCertain('month')).toBe(false)
|
|
88
|
+
expect(result.end.isCertain('year')).toBe(false)
|
|
89
|
+
expect(result.end.isCertain('hour')).toBe(true)
|
|
90
|
+
expect(result.end.isCertain('minute')).toBe(true)
|
|
91
|
+
expect(result.end.isCertain('second')).toBe(false)
|
|
92
|
+
expect(result.end.isCertain('millisecond')).toBe(false)
|
|
93
|
+
|
|
94
|
+
var resultDate = result.end.date();
|
|
95
|
+
var expectDate = new Date(2012, 7, 10, 23, 32);
|
|
96
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
var text = "6點30pm-11點pm";
|
|
100
|
+
var results = chrono.parse(text, new Date(2012,7,10));
|
|
101
|
+
expect(results.length).toBe(1)
|
|
102
|
+
|
|
103
|
+
var result = results[0];
|
|
104
|
+
if(result){
|
|
105
|
+
expect(result.index).toBe(0)
|
|
106
|
+
expect(result.text).toBe('6點30pm-11點pm')
|
|
107
|
+
|
|
108
|
+
expect(result.start).not.toBeNull()
|
|
109
|
+
expect(result.start.get('hour')).toBe(18)
|
|
110
|
+
expect(result.start.get('minute')).toBe(30)
|
|
111
|
+
expect(result.start.get('meridiem')).toBe(1)
|
|
112
|
+
|
|
113
|
+
var resultDate = result.start.date();
|
|
114
|
+
var expectDate = new Date(2012, 7, 10, 18, 30);
|
|
115
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
116
|
+
|
|
117
|
+
expect(result.end).not.toBeNull()
|
|
118
|
+
expect(result.end.get('hour')).toBe(23)
|
|
119
|
+
expect(result.end.get('minute')).toBe(0)
|
|
120
|
+
expect(result.end.get('meridiem')).toBe(1)
|
|
121
|
+
|
|
122
|
+
var resultDate = result.end.date();
|
|
123
|
+
var expectDate = new Date(2012, 7, 10, 23, 0);
|
|
124
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
125
|
+
}
|
|
88
126
|
|
|
89
127
|
});
|
|
90
128
|
|
|
91
129
|
test("Test - Date + Time Expression", function() {
|
|
92
130
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
131
|
+
var text = "雞二零一八年十一月廿六日下午三時半五十九秒全部都係雞";
|
|
132
|
+
var results = chrono.parse(text, new Date(2012,7,10));
|
|
133
|
+
expect(results.length).toBe(1)
|
|
96
134
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
expect(result.
|
|
100
|
-
expect(result.
|
|
101
|
-
expect(result.start.get('minute')).toBe(30);
|
|
102
|
-
expect(result.start.get('second')).toBe(59);
|
|
103
|
-
expect(result.start.get('millisecond')).toBe(0);
|
|
104
|
-
expect(result.start.isCertain('millisecond')).toBe(false);
|
|
135
|
+
var result = results[0];
|
|
136
|
+
if(result){
|
|
137
|
+
expect(result.index).toBe(1)
|
|
138
|
+
expect(result.text).toBe('二零一八年十一月廿六日下午三時半五十九秒')
|
|
105
139
|
|
|
106
|
-
expect(result.start).
|
|
107
|
-
|
|
140
|
+
expect(result.start.get('year')).toBe(2018)
|
|
141
|
+
expect(result.start.get('month')).toBe(11)
|
|
142
|
+
expect(result.start.get('day')).toBe(26)
|
|
143
|
+
expect(result.start.get('hour')).toBe(15)
|
|
144
|
+
expect(result.start.get('minute')).toBe(30)
|
|
145
|
+
expect(result.start.get('second')).toBe(59)
|
|
146
|
+
expect(result.start.get('millisecond')).toBe(0)
|
|
147
|
+
expect(result.start.isCertain('millisecond')).toBe(false)
|
|
108
148
|
|
|
109
|
-
|
|
149
|
+
var resultDate = result.start.date();
|
|
150
|
+
var expectDate = new Date(2018, 11-1, 26, 15, 30, 59);
|
|
151
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
})
|
|
110
155
|
|
|
111
156
|
|
|
112
157
|
test("Test - Time Expression's Meridiem imply", function() {
|
|
113
158
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
expect(result.
|
|
121
|
-
expect(result.
|
|
122
|
-
|
|
123
|
-
expect(result.start.get('
|
|
124
|
-
expect(result.start.get('
|
|
125
|
-
expect(result.start.get('
|
|
126
|
-
expect(result.start.
|
|
127
|
-
|
|
128
|
-
expect(result.
|
|
129
|
-
expect(result.
|
|
130
|
-
expect(result.
|
|
131
|
-
expect(result.
|
|
132
|
-
|
|
133
|
-
expect(result.end.get('
|
|
134
|
-
expect(result.end.get('
|
|
159
|
+
var text = "1點pm到3點";
|
|
160
|
+
var results = chrono.parse(text, new Date(2012,7,10));
|
|
161
|
+
expect(results.length).toBe(1)
|
|
162
|
+
|
|
163
|
+
var result = results[0];
|
|
164
|
+
if (result) {
|
|
165
|
+
expect(result.index).toBe(0)
|
|
166
|
+
expect(result.text).toBe('1點pm到3點')
|
|
167
|
+
|
|
168
|
+
expect(result.start.get('year')).toBe(2012)
|
|
169
|
+
expect(result.start.get('month')).toBe(8)
|
|
170
|
+
expect(result.start.get('day')).toBe(10)
|
|
171
|
+
expect(result.start.get('hour')).toBe(13)
|
|
172
|
+
expect(result.start.get('minute')).toBe(0)
|
|
173
|
+
expect(result.start.get('second')).toBe(0)
|
|
174
|
+
expect(result.start.get('millisecond')).toBe(0)
|
|
175
|
+
expect(result.start.get('meridiem')).toBe(1)
|
|
176
|
+
expect(result.start.isCertain('meridiem')).toBe(true)
|
|
177
|
+
|
|
178
|
+
expect(result.end.get('year')).toBe(2012)
|
|
179
|
+
expect(result.end.get('month')).toBe(8)
|
|
180
|
+
expect(result.end.get('day')).toBe(11)
|
|
181
|
+
expect(result.end.get('hour')).toBe(3)
|
|
182
|
+
expect(result.end.get('minute')).toBe(0)
|
|
183
|
+
expect(result.end.get('second')).toBe(0)
|
|
184
|
+
expect(result.end.get('millisecond')).toBe(0)
|
|
135
185
|
expect(result.end.isCertain('meridiem')).toBe(false)
|
|
136
|
-
}
|
|
137
|
-
})
|
|
186
|
+
}
|
|
187
|
+
})
|
|
138
188
|
|
|
139
189
|
|
|
140
190
|
test("Test - Random date + time expression", function() {
|
|
141
191
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
testSingleCase(chrono, '下星期六凌晨1點30分廿九秒', (result, text) => {
|
|
148
|
-
|
|
149
|
-
expect(result.text).toBe(text);
|
|
150
|
-
});
|
|
192
|
+
var text = "2014年, 3月5日晏晝 6 點至 7 點";
|
|
193
|
+
var result = chrono.parse(text)[0];
|
|
194
|
+
expect(result.text).toBe(text)
|
|
151
195
|
|
|
152
|
-
|
|
196
|
+
var text = "下星期六凌晨1點30分廿九秒";
|
|
197
|
+
var result = chrono.parse(text)[0];
|
|
198
|
+
expect(result.text).toBe(text)
|
|
153
199
|
|
|
154
|
-
|
|
155
|
-
|
|
200
|
+
var text = "尋日朝早六點正";
|
|
201
|
+
var result = chrono.parse(text)[0];
|
|
202
|
+
expect(result.text).toBe(text)
|
|
156
203
|
|
|
157
204
|
|
|
158
|
-
|
|
205
|
+
var text = "六月四日3:00am";
|
|
206
|
+
var result = chrono.parse(text)[0];
|
|
207
|
+
expect(result.text).toBe(text)
|
|
159
208
|
|
|
160
|
-
|
|
161
|
-
|
|
209
|
+
var text = "上個禮拜五16時";
|
|
210
|
+
var result = chrono.parse(text)[0];
|
|
211
|
+
expect(result.text).toBe(text)
|
|
162
212
|
|
|
163
|
-
|
|
213
|
+
var text = "3月17日 20點15";
|
|
214
|
+
var result = chrono.parse(text)[0];
|
|
215
|
+
expect(result.text).toBe(text)
|
|
164
216
|
|
|
165
|
-
|
|
166
|
-
|
|
217
|
+
var text = "10點";
|
|
218
|
+
var result = chrono.parse(text)[0];
|
|
219
|
+
expect(result.text).toBe(text)
|
|
167
220
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
expect(result.text).toBe(text);
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
testSingleCase(chrono, '中午12點', (result, text) => {
|
|
179
|
-
|
|
180
|
-
expect(result.text).toBe(text);
|
|
181
|
-
expect(result.start.get('hour')).toBe(12);
|
|
182
|
-
});
|
|
183
|
-
});
|
|
221
|
+
var text = "中午12點";
|
|
222
|
+
var result = chrono.parse(text)[0];
|
|
223
|
+
expect(result.text).toBe(text)
|
|
224
|
+
expect(result.start.get('hour')).toBe(12)
|
|
225
|
+
expect(result.start.get('hour')).toBe(12)
|
|
226
|
+
})
|