chrono-node 2.3.9 → 2.4.1
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.map +1 -1
- package/dist/common/calculation/weekdays.d.ts +7 -0
- package/dist/common/calculation/weekdays.js +68 -0
- package/dist/common/calculation/weekdays.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/locales/de/parsers/DEWeekdayParser.js +2 -8
- package/dist/locales/de/parsers/DEWeekdayParser.js.map +1 -1
- package/dist/locales/en/constants.d.ts +2 -1
- package/dist/locales/en/constants.js.map +1 -1
- package/dist/locales/en/parsers/ENWeekdayParser.js +3 -9
- package/dist/locales/en/parsers/ENWeekdayParser.js.map +1 -1
- package/dist/locales/fr/parsers/FRWeekdayParser.js +4 -10
- package/dist/locales/fr/parsers/FRWeekdayParser.js.map +1 -1
- package/dist/locales/nl/parsers/NLWeekdayParser.js +3 -9
- package/dist/locales/nl/parsers/NLWeekdayParser.js.map +1 -1
- package/dist/locales/pt/parsers/PTWeekdayParser.js +4 -10
- package/dist/locales/pt/parsers/PTWeekdayParser.js.map +1 -1
- package/dist/locales/ru/constants.js +4 -5
- package/dist/locales/ru/constants.js.map +1 -1
- package/dist/locales/ru/parsers/RUWeekdayParser.js +3 -9
- package/dist/locales/ru/parsers/RUWeekdayParser.js.map +1 -1
- package/dist/locales/ru/refiners/RUMergeDateRangeRefiner.d.ts +1 -1
- package/dist/locales/ru/refiners/RUMergeDateRangeRefiner.js +2 -2
- package/dist/locales/ru/refiners/RUMergeDateRangeRefiner.js.map +1 -1
- package/dist/results.d.ts +2 -1
- package/dist/results.js +14 -10
- package/dist/results.js.map +1 -1
- package/package.json +1 -1
- package/src/chrono.ts +3 -1
- package/src/common/calculation/weekdays.ts +89 -0
- package/src/index.ts +10 -0
- package/src/locales/de/parsers/DEWeekdayParser.ts +2 -8
- package/src/locales/en/constants.ts +2 -1
- package/src/locales/en/parsers/ENWeekdayParser.ts +3 -9
- package/src/locales/fr/parsers/FRWeekdayParser.ts +4 -10
- package/src/locales/nl/parsers/NLWeekdayParser.ts +3 -9
- package/src/locales/pt/parsers/PTWeekdayParser.ts +4 -10
- package/src/locales/ru/constants.ts +4 -6
- package/src/locales/ru/parsers/RUWeekdayParser.ts +3 -9
- package/src/locales/ru/refiners/RUMergeDateRangeRefiner.ts +1 -1
- package/src/results.ts +27 -15
- package/test/calculation.test.ts +116 -0
- package/test/en/en.test.ts +10 -0
- package/test/en/en_weekday.test.ts +116 -1
- package/src/calculation/weeks.ts +0 -38
|
@@ -72,7 +72,7 @@ test("Test - Single Expression", function () {
|
|
|
72
72
|
expect(result.start).toBeDate(new Date(2012, 7, 3, 12));
|
|
73
73
|
});
|
|
74
74
|
|
|
75
|
-
testSingleCase(chrono.casual, "Let's have a meeting on Friday next week", new Date(
|
|
75
|
+
testSingleCase(chrono.casual, "Let's have a meeting on Friday next week", new Date("Sat Apr 18 2015"), (result) => {
|
|
76
76
|
expect(result.index).toBe(21);
|
|
77
77
|
expect(result.text).toBe("on Friday next week");
|
|
78
78
|
|
|
@@ -104,6 +104,121 @@ test("Test - Single Expression", function () {
|
|
|
104
104
|
);
|
|
105
105
|
});
|
|
106
106
|
|
|
107
|
+
test("Test - Weekday casual `This` guessing", function () {
|
|
108
|
+
testSingleCase(chrono.casual, "This Saturday", new Date("Tue Aug 2 2022"), (result) => {
|
|
109
|
+
expect(result.start.get("day")).toBe(6);
|
|
110
|
+
expect(result.start.get("month")).toBe(8);
|
|
111
|
+
expect(result.start.get("year")).toBe(2022);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
testSingleCase(chrono.casual, "This Sunday", new Date("Tue Aug 2 2022"), (result) => {
|
|
115
|
+
expect(result.start.get("day")).toBe(7);
|
|
116
|
+
expect(result.start.get("month")).toBe(8);
|
|
117
|
+
expect(result.start.get("year")).toBe(2022);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
testSingleCase(chrono.casual, "This Wednesday", new Date("Tue Aug 2 2022"), (result) => {
|
|
121
|
+
expect(result.start.get("day")).toBe(3);
|
|
122
|
+
expect(result.start.get("month")).toBe(8);
|
|
123
|
+
expect(result.start.get("year")).toBe(2022);
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
testSingleCase(chrono.casual, "This Saturday", new Date("Sun Aug 7 2022"), (result) => {
|
|
127
|
+
expect(result.start.get("day")).toBe(13);
|
|
128
|
+
expect(result.start.get("month")).toBe(8);
|
|
129
|
+
expect(result.start.get("year")).toBe(2022);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
testSingleCase(chrono.casual, "This Sunday", new Date("Sun Aug 7 2022"), (result) => {
|
|
133
|
+
expect(result.start.get("day")).toBe(7);
|
|
134
|
+
expect(result.start.get("month")).toBe(8);
|
|
135
|
+
expect(result.start.get("year")).toBe(2022);
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
testSingleCase(chrono.casual, "This Wednesday", new Date("Sun Aug 7 2022"), (result) => {
|
|
139
|
+
expect(result.start.get("day")).toBe(10);
|
|
140
|
+
expect(result.start.get("month")).toBe(8);
|
|
141
|
+
expect(result.start.get("year")).toBe(2022);
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
test("Test - Weekday casual `Last` guessing", function () {
|
|
146
|
+
testSingleCase(chrono.casual, "Last Saturday", new Date("Tue Aug 2 2022"), (result) => {
|
|
147
|
+
expect(result.start.get("day")).toBe(30);
|
|
148
|
+
expect(result.start.get("month")).toBe(7);
|
|
149
|
+
expect(result.start.get("year")).toBe(2022);
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
testSingleCase(chrono.casual, "Last Sunday", new Date("Tue Aug 2 2022"), (result) => {
|
|
153
|
+
expect(result.start.get("day")).toBe(31);
|
|
154
|
+
expect(result.start.get("month")).toBe(7);
|
|
155
|
+
expect(result.start.get("year")).toBe(2022);
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
testSingleCase(chrono.casual, "Last Wednesday", new Date("Tue Aug 2 2022"), (result) => {
|
|
159
|
+
expect(result.start.get("day")).toBe(27);
|
|
160
|
+
expect(result.start.get("month")).toBe(7);
|
|
161
|
+
expect(result.start.get("year")).toBe(2022);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
test("Test - Weekday casual `Next` guessing", function () {
|
|
166
|
+
{
|
|
167
|
+
const refDate = new Date("Tue Aug 2 2022");
|
|
168
|
+
testSingleCase(chrono.casual, "Next Saturday", refDate, (result) => {
|
|
169
|
+
expect(result.start.get("day")).toBe(13);
|
|
170
|
+
expect(result.start.get("month")).toBe(8);
|
|
171
|
+
expect(result.start.get("year")).toBe(2022);
|
|
172
|
+
});
|
|
173
|
+
testSingleCase(chrono.casual, "Next Sunday", refDate, (result) => {
|
|
174
|
+
expect(result.start.get("day")).toBe(14);
|
|
175
|
+
expect(result.start.get("month")).toBe(8);
|
|
176
|
+
expect(result.start.get("year")).toBe(2022);
|
|
177
|
+
});
|
|
178
|
+
testSingleCase(chrono.casual, "Next Wednesday", refDate, (result) => {
|
|
179
|
+
expect(result.start.get("day")).toBe(10);
|
|
180
|
+
expect(result.start.get("month")).toBe(8);
|
|
181
|
+
expect(result.start.get("year")).toBe(2022);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
{
|
|
185
|
+
const refDate = new Date("Saturday Aug 6 2022");
|
|
186
|
+
testSingleCase(chrono.casual, "Next Saturday", refDate, (result) => {
|
|
187
|
+
expect(result.start.get("day")).toBe(13);
|
|
188
|
+
expect(result.start.get("month")).toBe(8);
|
|
189
|
+
expect(result.start.get("year")).toBe(2022);
|
|
190
|
+
});
|
|
191
|
+
testSingleCase(chrono.casual, "Next Sunday", refDate, (result) => {
|
|
192
|
+
expect(result.start.get("day")).toBe(14);
|
|
193
|
+
expect(result.start.get("month")).toBe(8);
|
|
194
|
+
expect(result.start.get("year")).toBe(2022);
|
|
195
|
+
});
|
|
196
|
+
testSingleCase(chrono.casual, "Next Wednesday", refDate, (result) => {
|
|
197
|
+
expect(result.start.get("day")).toBe(10);
|
|
198
|
+
expect(result.start.get("month")).toBe(8);
|
|
199
|
+
expect(result.start.get("year")).toBe(2022);
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
{
|
|
203
|
+
const refDate = new Date("Sun Aug 7 2022");
|
|
204
|
+
testSingleCase(chrono.casual, "Next Saturday", refDate, (result) => {
|
|
205
|
+
expect(result.start.get("day")).toBe(13);
|
|
206
|
+
expect(result.start.get("month")).toBe(8);
|
|
207
|
+
expect(result.start.get("year")).toBe(2022);
|
|
208
|
+
});
|
|
209
|
+
testSingleCase(chrono.casual, "Next Sunday", refDate, (result) => {
|
|
210
|
+
expect(result.start.get("day")).toBe(14);
|
|
211
|
+
expect(result.start.get("month")).toBe(8);
|
|
212
|
+
expect(result.start.get("year")).toBe(2022);
|
|
213
|
+
});
|
|
214
|
+
testSingleCase(chrono.casual, "Next Wednesday", refDate, (result) => {
|
|
215
|
+
expect(result.start.get("day")).toBe(10);
|
|
216
|
+
expect(result.start.get("month")).toBe(8);
|
|
217
|
+
expect(result.start.get("year")).toBe(2022);
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
|
|
107
222
|
test("Test - Weekday With Casual Time", function () {
|
|
108
223
|
testSingleCase(chrono.casual, "Lets meet on Tuesday morning", new Date(2015, 3, 18), (result) => {
|
|
109
224
|
expect(result.index).toBe(10);
|
package/src/calculation/weeks.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import dayjs, { Dayjs } from "dayjs";
|
|
2
|
-
|
|
3
|
-
export function toDayJSWeekday(refDate: Date, offset: number, modifier?: "this" | "next" | "last"): Dayjs {
|
|
4
|
-
if (!modifier) {
|
|
5
|
-
return toDayJSClosestWeekday(refDate, offset);
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
let date = dayjs(refDate);
|
|
9
|
-
switch (modifier) {
|
|
10
|
-
case "this":
|
|
11
|
-
date = date.day(offset);
|
|
12
|
-
break;
|
|
13
|
-
|
|
14
|
-
case "next":
|
|
15
|
-
date = date.day(offset + 7);
|
|
16
|
-
break;
|
|
17
|
-
|
|
18
|
-
case "last":
|
|
19
|
-
date = date.day(offset - 7);
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return date;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export function toDayJSClosestWeekday(refDate: Date, offset: number): Dayjs {
|
|
27
|
-
let date = dayjs(refDate);
|
|
28
|
-
const refOffset = date.day();
|
|
29
|
-
if (Math.abs(offset - 7 - refOffset) < Math.abs(offset - refOffset)) {
|
|
30
|
-
date = date.day(offset - 7);
|
|
31
|
-
} else if (Math.abs(offset + 7 - refOffset) < Math.abs(offset - refOffset)) {
|
|
32
|
-
date = date.day(offset + 7);
|
|
33
|
-
} else {
|
|
34
|
-
date = date.day(offset);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return date;
|
|
38
|
-
}
|