cronli5 0.8.2 → 0.8.3
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/CHANGELOG.md +15 -0
- package/cronli5.min.js +2 -2
- package/dist/cronli5.cjs +50 -4
- package/dist/cronli5.js +50 -4
- package/dist/lang/de.cjs +39 -0
- package/dist/lang/de.js +39 -0
- package/dist/lang/en.cjs +50 -4
- package/dist/lang/en.js +50 -4
- package/dist/lang/es.cjs +39 -0
- package/dist/lang/es.js +39 -0
- package/dist/lang/fi.cjs +40 -0
- package/dist/lang/fi.js +40 -0
- package/dist/lang/fr.cjs +39 -0
- package/dist/lang/fr.js +39 -0
- package/dist/lang/pt.cjs +39 -0
- package/dist/lang/pt.js +39 -0
- package/dist/lang/zh.cjs +24 -2
- package/dist/lang/zh.js +24 -2
- package/package.json +1 -1
- package/src/lang/de/index.ts +77 -0
- package/src/lang/en/index.ts +97 -21
- package/src/lang/es/index.ts +84 -0
- package/src/lang/fi/index.ts +86 -0
- package/src/lang/fr/index.ts +79 -0
- package/src/lang/pt/index.ts +79 -0
- package/src/lang/zh/index.ts +69 -4
package/dist/lang/en.js
CHANGED
|
@@ -495,6 +495,45 @@ var stepOrdinals = {
|
|
|
495
495
|
8: "eighth",
|
|
496
496
|
12: "twelfth"
|
|
497
497
|
};
|
|
498
|
+
var spelledOrdinals = {
|
|
499
|
+
2: "other",
|
|
500
|
+
3: "third",
|
|
501
|
+
4: "fourth",
|
|
502
|
+
5: "fifth",
|
|
503
|
+
6: "sixth",
|
|
504
|
+
7: "seventh",
|
|
505
|
+
8: "eighth",
|
|
506
|
+
9: "ninth",
|
|
507
|
+
10: "tenth",
|
|
508
|
+
11: "eleventh",
|
|
509
|
+
12: "twelfth",
|
|
510
|
+
15: "fifteenth",
|
|
511
|
+
20: "twentieth",
|
|
512
|
+
30: "thirtieth"
|
|
513
|
+
};
|
|
514
|
+
function ordinalWord(interval) {
|
|
515
|
+
return spelledOrdinals[interval] ?? getOrdinal(interval);
|
|
516
|
+
}
|
|
517
|
+
function minuteStrideConfinement(stride, opts) {
|
|
518
|
+
const base = " during every " + ordinalWord(stride.interval) + " minute";
|
|
519
|
+
return renderStride({ ...stride, cycle: 60 }, {
|
|
520
|
+
bare: () => base,
|
|
521
|
+
offset: () => base + " from " + getNumber(stride.start, opts) + " " + pluralize(stride.start, "minute") + " past the hour",
|
|
522
|
+
bounded: () => {
|
|
523
|
+
const num = seriesNumber();
|
|
524
|
+
return base + " from " + num(stride.start) + through(opts) + num(stride.last) + " " + pluralize(stride.last, "minute") + " past the hour";
|
|
525
|
+
}
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
function minuteStride(schedule) {
|
|
529
|
+
if (schedule.shapes.minute === "step") {
|
|
530
|
+
const segment = stepSegment(schedule, "minute");
|
|
531
|
+
const start = segment.startToken === "*" ? 0 : +segment.startToken;
|
|
532
|
+
return { interval: segment.interval, last: segment.fires[segment.fires.length - 1], start };
|
|
533
|
+
}
|
|
534
|
+
const values = singleValues(segmentsOf(schedule, "minute"));
|
|
535
|
+
return values && arithmeticStep(values);
|
|
536
|
+
}
|
|
498
537
|
function everyNthHour(segment, opts) {
|
|
499
538
|
const base = "during every " + stepOrdinals[segment.interval] + " hour";
|
|
500
539
|
const start = segment.startToken === "*" ? 0 : +segment.startToken;
|
|
@@ -700,9 +739,13 @@ function minuteConfinement(schedule, opts) {
|
|
|
700
739
|
if (minute === "*") {
|
|
701
740
|
return "";
|
|
702
741
|
}
|
|
703
|
-
if (
|
|
742
|
+
if (minute === "*/2") {
|
|
704
743
|
return " of every other minute";
|
|
705
744
|
}
|
|
745
|
+
const stride = minuteStride(schedule);
|
|
746
|
+
if (stride) {
|
|
747
|
+
return minuteStrideConfinement(stride, opts);
|
|
748
|
+
}
|
|
706
749
|
const segments = segmentsOf(schedule, "minute");
|
|
707
750
|
if (schedule.shapes.minute === "single") {
|
|
708
751
|
return " during minute :" + pad(minute);
|
|
@@ -719,7 +762,7 @@ function minuteConfinement(schedule, opts) {
|
|
|
719
762
|
function hourConfinement(schedule, opts) {
|
|
720
763
|
const hour = schedule.pattern.hour;
|
|
721
764
|
if (hour === "*") {
|
|
722
|
-
const minutePinned = schedule.pattern.minute !== "*" && !isCadenceField(schedule.pattern.minute);
|
|
765
|
+
const minutePinned = schedule.pattern.minute !== "*" && !isCadenceField(schedule.pattern.minute) && !minuteStride(schedule);
|
|
723
766
|
return minutePinned ? " of every hour" : "";
|
|
724
767
|
}
|
|
725
768
|
if (isCadenceField(hour)) {
|
|
@@ -768,9 +811,12 @@ function confinementEligible(schedule, lead) {
|
|
|
768
811
|
}
|
|
769
812
|
if (lead.secondLead) {
|
|
770
813
|
if (minuteStep) {
|
|
771
|
-
return minute === "*/2"
|
|
814
|
+
return minute === "*/2" ? schedule.shapes.hour !== "range" : schedule.pattern.hour === "*";
|
|
815
|
+
}
|
|
816
|
+
if (isMinuteStride(schedule)) {
|
|
817
|
+
return schedule.pattern.hour === "*";
|
|
772
818
|
}
|
|
773
|
-
if (
|
|
819
|
+
if (schedule.shapes.minute === "list" && schedule.shapes.hour === "list") {
|
|
774
820
|
return false;
|
|
775
821
|
}
|
|
776
822
|
return true;
|
package/dist/lang/es.cjs
CHANGED
|
@@ -223,6 +223,20 @@ var weekdayNames = [
|
|
|
223
223
|
"s\xE1bado"
|
|
224
224
|
];
|
|
225
225
|
var nthWeekdayNames = [null, "primer", "segundo", "tercer", "cuarto", "quinto"];
|
|
226
|
+
var stepOrdinals = {
|
|
227
|
+
3: "tercer",
|
|
228
|
+
4: "cuarto",
|
|
229
|
+
5: "quinto",
|
|
230
|
+
6: "sexto",
|
|
231
|
+
7: "s\xE9ptimo",
|
|
232
|
+
8: "octavo",
|
|
233
|
+
9: "noveno",
|
|
234
|
+
10: "d\xE9cimo",
|
|
235
|
+
12: "duod\xE9cimo",
|
|
236
|
+
15: "decimoquinto",
|
|
237
|
+
20: "vig\xE9simo",
|
|
238
|
+
30: "trig\xE9simo"
|
|
239
|
+
};
|
|
226
240
|
function normalizeOptions(options) {
|
|
227
241
|
options = options || {};
|
|
228
242
|
const style = resolveDialect(options.dialect);
|
|
@@ -287,6 +301,28 @@ function composeHourCadence(schedule, plan, opts) {
|
|
|
287
301
|
function isPinnedMinuteSeconds(schedule, plan) {
|
|
288
302
|
return plan.rest.kind === "clockTimes" && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step");
|
|
289
303
|
}
|
|
304
|
+
function minuteStride(schedule) {
|
|
305
|
+
if (schedule.shapes.minute === "step") {
|
|
306
|
+
const segment = stepSegment(schedule, "minute");
|
|
307
|
+
const start = segment.startToken === "*" ? 0 : +segment.startToken;
|
|
308
|
+
return { interval: segment.interval, last: segment.fires[segment.fires.length - 1], start };
|
|
309
|
+
}
|
|
310
|
+
const values = singleValues(segmentsOf(schedule, "minute"));
|
|
311
|
+
return values && arithmeticStep(values);
|
|
312
|
+
}
|
|
313
|
+
function minuteStepConfinement(schedule, stride, opts) {
|
|
314
|
+
const ordinal = stepOrdinals[stride.interval];
|
|
315
|
+
const head = ordinal ? "cada " + ordinal + " minuto" : "cada " + numero(stride.interval, opts) + " minutos";
|
|
316
|
+
const tail = renderStride({ ...stride, cycle: 60 }, {
|
|
317
|
+
bare: () => "",
|
|
318
|
+
offset: () => " a partir del minuto " + stride.start,
|
|
319
|
+
bounded: () => " del minuto " + stride.start + " al " + stride.last
|
|
320
|
+
});
|
|
321
|
+
return secondsLeadClause(schedule, opts) + " en " + head + tail + " de cada hora" + trailingQualifier(schedule, opts);
|
|
322
|
+
}
|
|
323
|
+
function isSteppedMinuteSeconds(schedule, plan) {
|
|
324
|
+
return (plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes") && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step") && schedule.shapes.hour === "wildcard" && schedule.pattern.minute !== "*/2" && minuteStride(schedule) !== null;
|
|
325
|
+
}
|
|
290
326
|
function renderComposeSeconds(schedule, plan, opts) {
|
|
291
327
|
const hourCad = composeHourCadence(schedule, plan, opts);
|
|
292
328
|
if (hourCad !== null) {
|
|
@@ -305,6 +341,9 @@ function renderComposeSeconds(schedule, plan, opts) {
|
|
|
305
341
|
const cadence = "cada " + numero(stepSegment(schedule, "second").interval, opts) + " segundos del minuto " + schedule.pattern.minute;
|
|
306
342
|
return dayFrame + ", " + window + ", " + cadence;
|
|
307
343
|
}
|
|
344
|
+
if (isSteppedMinuteSeconds(schedule, plan)) {
|
|
345
|
+
return minuteStepConfinement(schedule, minuteStride(schedule), opts);
|
|
346
|
+
}
|
|
308
347
|
if (isEveryOtherMinuteSeconds(schedule, plan)) {
|
|
309
348
|
return secondsLeadClause(schedule, opts) + " de " + render(schedule, plan.rest, opts);
|
|
310
349
|
}
|
package/dist/lang/es.js
CHANGED
|
@@ -197,6 +197,20 @@ var weekdayNames = [
|
|
|
197
197
|
"s\xE1bado"
|
|
198
198
|
];
|
|
199
199
|
var nthWeekdayNames = [null, "primer", "segundo", "tercer", "cuarto", "quinto"];
|
|
200
|
+
var stepOrdinals = {
|
|
201
|
+
3: "tercer",
|
|
202
|
+
4: "cuarto",
|
|
203
|
+
5: "quinto",
|
|
204
|
+
6: "sexto",
|
|
205
|
+
7: "s\xE9ptimo",
|
|
206
|
+
8: "octavo",
|
|
207
|
+
9: "noveno",
|
|
208
|
+
10: "d\xE9cimo",
|
|
209
|
+
12: "duod\xE9cimo",
|
|
210
|
+
15: "decimoquinto",
|
|
211
|
+
20: "vig\xE9simo",
|
|
212
|
+
30: "trig\xE9simo"
|
|
213
|
+
};
|
|
200
214
|
function normalizeOptions(options) {
|
|
201
215
|
options = options || {};
|
|
202
216
|
const style = resolveDialect(options.dialect);
|
|
@@ -261,6 +275,28 @@ function composeHourCadence(schedule, plan, opts) {
|
|
|
261
275
|
function isPinnedMinuteSeconds(schedule, plan) {
|
|
262
276
|
return plan.rest.kind === "clockTimes" && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step");
|
|
263
277
|
}
|
|
278
|
+
function minuteStride(schedule) {
|
|
279
|
+
if (schedule.shapes.minute === "step") {
|
|
280
|
+
const segment = stepSegment(schedule, "minute");
|
|
281
|
+
const start = segment.startToken === "*" ? 0 : +segment.startToken;
|
|
282
|
+
return { interval: segment.interval, last: segment.fires[segment.fires.length - 1], start };
|
|
283
|
+
}
|
|
284
|
+
const values = singleValues(segmentsOf(schedule, "minute"));
|
|
285
|
+
return values && arithmeticStep(values);
|
|
286
|
+
}
|
|
287
|
+
function minuteStepConfinement(schedule, stride, opts) {
|
|
288
|
+
const ordinal = stepOrdinals[stride.interval];
|
|
289
|
+
const head = ordinal ? "cada " + ordinal + " minuto" : "cada " + numero(stride.interval, opts) + " minutos";
|
|
290
|
+
const tail = renderStride({ ...stride, cycle: 60 }, {
|
|
291
|
+
bare: () => "",
|
|
292
|
+
offset: () => " a partir del minuto " + stride.start,
|
|
293
|
+
bounded: () => " del minuto " + stride.start + " al " + stride.last
|
|
294
|
+
});
|
|
295
|
+
return secondsLeadClause(schedule, opts) + " en " + head + tail + " de cada hora" + trailingQualifier(schedule, opts);
|
|
296
|
+
}
|
|
297
|
+
function isSteppedMinuteSeconds(schedule, plan) {
|
|
298
|
+
return (plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes") && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step") && schedule.shapes.hour === "wildcard" && schedule.pattern.minute !== "*/2" && minuteStride(schedule) !== null;
|
|
299
|
+
}
|
|
264
300
|
function renderComposeSeconds(schedule, plan, opts) {
|
|
265
301
|
const hourCad = composeHourCadence(schedule, plan, opts);
|
|
266
302
|
if (hourCad !== null) {
|
|
@@ -279,6 +315,9 @@ function renderComposeSeconds(schedule, plan, opts) {
|
|
|
279
315
|
const cadence = "cada " + numero(stepSegment(schedule, "second").interval, opts) + " segundos del minuto " + schedule.pattern.minute;
|
|
280
316
|
return dayFrame + ", " + window + ", " + cadence;
|
|
281
317
|
}
|
|
318
|
+
if (isSteppedMinuteSeconds(schedule, plan)) {
|
|
319
|
+
return minuteStepConfinement(schedule, minuteStride(schedule), opts);
|
|
320
|
+
}
|
|
282
321
|
if (isEveryOtherMinuteSeconds(schedule, plan)) {
|
|
283
322
|
return secondsLeadClause(schedule, opts) + " de " + render(schedule, plan.rest, opts);
|
|
284
323
|
}
|
package/dist/lang/fi.cjs
CHANGED
|
@@ -224,6 +224,20 @@ var nthWeekdayNames = [
|
|
|
224
224
|
"nelj\xE4nten\xE4",
|
|
225
225
|
"viidenten\xE4"
|
|
226
226
|
];
|
|
227
|
+
var minuteStepOrdinals = {
|
|
228
|
+
3: "kolmantena",
|
|
229
|
+
4: "nelj\xE4nten\xE4",
|
|
230
|
+
5: "viidenten\xE4",
|
|
231
|
+
6: "kuudentena",
|
|
232
|
+
7: "seitsem\xE4nten\xE4",
|
|
233
|
+
8: "kahdeksantena",
|
|
234
|
+
9: "yhdeks\xE4nten\xE4",
|
|
235
|
+
10: "kymmenenten\xE4",
|
|
236
|
+
12: "kahdentenatoista",
|
|
237
|
+
15: "viidenten\xE4toista",
|
|
238
|
+
20: "kahdentenakymmenenten\xE4",
|
|
239
|
+
30: "kolmantenakymmenenten\xE4"
|
|
240
|
+
};
|
|
227
241
|
var weekdays = [
|
|
228
242
|
{
|
|
229
243
|
ela: "sunnuntaista",
|
|
@@ -391,11 +405,37 @@ function composeHourCadence(schedule, plan, opts) {
|
|
|
391
405
|
const minute = +schedule.pattern.minute;
|
|
392
406
|
return hourCadence(schedule, minute, opts) ?? hourRangeCadence(schedule, minute, opts);
|
|
393
407
|
}
|
|
408
|
+
function minuteStride(schedule) {
|
|
409
|
+
if (schedule.shapes.minute === "step") {
|
|
410
|
+
const segment = stepSegment(schedule, "minute");
|
|
411
|
+
const start = segment.startToken === "*" ? 0 : +segment.startToken;
|
|
412
|
+
return { interval: segment.interval, last: segment.fires[segment.fires.length - 1], start };
|
|
413
|
+
}
|
|
414
|
+
const values = singleValues(segmentsOf(schedule, "minute"));
|
|
415
|
+
return values && arithmeticStep(values);
|
|
416
|
+
}
|
|
417
|
+
function minuteStepConfinement(schedule, stride, opts) {
|
|
418
|
+
const ordinalForm = minuteStepOrdinals[stride.interval];
|
|
419
|
+
const minute = units.minute;
|
|
420
|
+
const head = ordinalForm ? " joka " + ordinalForm + " minuuttina" : " " + genitive(stride.interval, opts) + " " + minute.gen + " v\xE4lein";
|
|
421
|
+
const tail = renderStride({ ...stride, cycle: 60 }, {
|
|
422
|
+
bare: () => "",
|
|
423
|
+
offset: () => " " + minute.anchor + " " + minute.ela + " " + stride.start + " alkaen",
|
|
424
|
+
bounded: () => " " + minute.ela + " " + stride.start + " " + minute.ill + " " + stride.last
|
|
425
|
+
});
|
|
426
|
+
return secondsLeadClause(schedule, opts) + head + tail + trailingQualifier(schedule, opts);
|
|
427
|
+
}
|
|
428
|
+
function isSteppedMinuteSeconds(schedule, plan) {
|
|
429
|
+
return (plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes") && (schedule.pattern.second === "*" || schedule.shapes.second === "step") && schedule.shapes.hour === "wildcard" && schedule.pattern.minute !== "*/2" && minuteStride(schedule) !== null;
|
|
430
|
+
}
|
|
394
431
|
function renderComposeSeconds(schedule, plan, opts) {
|
|
395
432
|
const cadence = composeHourCadence(schedule, plan, opts);
|
|
396
433
|
if (cadence !== null) {
|
|
397
434
|
return cadence;
|
|
398
435
|
}
|
|
436
|
+
if (isSteppedMinuteSeconds(schedule, plan)) {
|
|
437
|
+
return minuteStepConfinement(schedule, minuteStride(schedule), opts);
|
|
438
|
+
}
|
|
399
439
|
if (plan.rest.kind === "minuteFrequency" && schedule.pattern.second !== "*") {
|
|
400
440
|
return composeSecondsOverMinuteStep(schedule, plan.rest, opts);
|
|
401
441
|
}
|
package/dist/lang/fi.js
CHANGED
|
@@ -198,6 +198,20 @@ var nthWeekdayNames = [
|
|
|
198
198
|
"nelj\xE4nten\xE4",
|
|
199
199
|
"viidenten\xE4"
|
|
200
200
|
];
|
|
201
|
+
var minuteStepOrdinals = {
|
|
202
|
+
3: "kolmantena",
|
|
203
|
+
4: "nelj\xE4nten\xE4",
|
|
204
|
+
5: "viidenten\xE4",
|
|
205
|
+
6: "kuudentena",
|
|
206
|
+
7: "seitsem\xE4nten\xE4",
|
|
207
|
+
8: "kahdeksantena",
|
|
208
|
+
9: "yhdeks\xE4nten\xE4",
|
|
209
|
+
10: "kymmenenten\xE4",
|
|
210
|
+
12: "kahdentenatoista",
|
|
211
|
+
15: "viidenten\xE4toista",
|
|
212
|
+
20: "kahdentenakymmenenten\xE4",
|
|
213
|
+
30: "kolmantenakymmenenten\xE4"
|
|
214
|
+
};
|
|
201
215
|
var weekdays = [
|
|
202
216
|
{
|
|
203
217
|
ela: "sunnuntaista",
|
|
@@ -365,11 +379,37 @@ function composeHourCadence(schedule, plan, opts) {
|
|
|
365
379
|
const minute = +schedule.pattern.minute;
|
|
366
380
|
return hourCadence(schedule, minute, opts) ?? hourRangeCadence(schedule, minute, opts);
|
|
367
381
|
}
|
|
382
|
+
function minuteStride(schedule) {
|
|
383
|
+
if (schedule.shapes.minute === "step") {
|
|
384
|
+
const segment = stepSegment(schedule, "minute");
|
|
385
|
+
const start = segment.startToken === "*" ? 0 : +segment.startToken;
|
|
386
|
+
return { interval: segment.interval, last: segment.fires[segment.fires.length - 1], start };
|
|
387
|
+
}
|
|
388
|
+
const values = singleValues(segmentsOf(schedule, "minute"));
|
|
389
|
+
return values && arithmeticStep(values);
|
|
390
|
+
}
|
|
391
|
+
function minuteStepConfinement(schedule, stride, opts) {
|
|
392
|
+
const ordinalForm = minuteStepOrdinals[stride.interval];
|
|
393
|
+
const minute = units.minute;
|
|
394
|
+
const head = ordinalForm ? " joka " + ordinalForm + " minuuttina" : " " + genitive(stride.interval, opts) + " " + minute.gen + " v\xE4lein";
|
|
395
|
+
const tail = renderStride({ ...stride, cycle: 60 }, {
|
|
396
|
+
bare: () => "",
|
|
397
|
+
offset: () => " " + minute.anchor + " " + minute.ela + " " + stride.start + " alkaen",
|
|
398
|
+
bounded: () => " " + minute.ela + " " + stride.start + " " + minute.ill + " " + stride.last
|
|
399
|
+
});
|
|
400
|
+
return secondsLeadClause(schedule, opts) + head + tail + trailingQualifier(schedule, opts);
|
|
401
|
+
}
|
|
402
|
+
function isSteppedMinuteSeconds(schedule, plan) {
|
|
403
|
+
return (plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes") && (schedule.pattern.second === "*" || schedule.shapes.second === "step") && schedule.shapes.hour === "wildcard" && schedule.pattern.minute !== "*/2" && minuteStride(schedule) !== null;
|
|
404
|
+
}
|
|
368
405
|
function renderComposeSeconds(schedule, plan, opts) {
|
|
369
406
|
const cadence = composeHourCadence(schedule, plan, opts);
|
|
370
407
|
if (cadence !== null) {
|
|
371
408
|
return cadence;
|
|
372
409
|
}
|
|
410
|
+
if (isSteppedMinuteSeconds(schedule, plan)) {
|
|
411
|
+
return minuteStepConfinement(schedule, minuteStride(schedule), opts);
|
|
412
|
+
}
|
|
373
413
|
if (plan.rest.kind === "minuteFrequency" && schedule.pattern.second !== "*") {
|
|
374
414
|
return composeSecondsOverMinuteStep(schedule, plan.rest, opts);
|
|
375
415
|
}
|
package/dist/lang/fr.cjs
CHANGED
|
@@ -210,6 +210,20 @@ var weekdayNames = [
|
|
|
210
210
|
"samedi"
|
|
211
211
|
];
|
|
212
212
|
var nthWeekdayMasculine = [null, "premier", "deuxi\xE8me", "troisi\xE8me", "quatri\xE8me", "cinqui\xE8me"];
|
|
213
|
+
var stepOrdinals = {
|
|
214
|
+
3: "troisi\xE8me",
|
|
215
|
+
4: "quatri\xE8me",
|
|
216
|
+
5: "cinqui\xE8me",
|
|
217
|
+
6: "sixi\xE8me",
|
|
218
|
+
7: "septi\xE8me",
|
|
219
|
+
8: "huiti\xE8me",
|
|
220
|
+
9: "neuvi\xE8me",
|
|
221
|
+
10: "dixi\xE8me",
|
|
222
|
+
12: "douzi\xE8me",
|
|
223
|
+
15: "quinzi\xE8me",
|
|
224
|
+
20: "vingti\xE8me",
|
|
225
|
+
30: "trenti\xE8me"
|
|
226
|
+
};
|
|
213
227
|
function normalizeOptions(options) {
|
|
214
228
|
options = options || {};
|
|
215
229
|
const style = resolveDialect(options.dialect);
|
|
@@ -274,6 +288,28 @@ function composeHourCadence(schedule, plan, opts) {
|
|
|
274
288
|
function isPinnedMinuteSeconds(schedule, plan) {
|
|
275
289
|
return plan.rest.kind === "clockTimes" && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step");
|
|
276
290
|
}
|
|
291
|
+
function minuteStride(schedule) {
|
|
292
|
+
if (schedule.shapes.minute === "step") {
|
|
293
|
+
const segment = stepSegment(schedule, "minute");
|
|
294
|
+
const start = segment.startToken === "*" ? 0 : +segment.startToken;
|
|
295
|
+
return { interval: segment.interval, last: segment.fires[segment.fires.length - 1], start };
|
|
296
|
+
}
|
|
297
|
+
const values = singleValues(segmentsOf(schedule, "minute"));
|
|
298
|
+
return values && arithmeticStep(values);
|
|
299
|
+
}
|
|
300
|
+
function minuteStepConfinement(schedule, stride, opts) {
|
|
301
|
+
const ordinal = stepOrdinals[stride.interval];
|
|
302
|
+
const head = ordinal ? "\xE0 la " + ordinal + " minute" : "\xE0 la minute toutes les " + numero(stride.interval, opts);
|
|
303
|
+
const tail = renderStride({ ...stride, cycle: 60 }, {
|
|
304
|
+
bare: () => "",
|
|
305
|
+
offset: () => " \xE0 partir de la minute " + stride.start,
|
|
306
|
+
bounded: () => " de la minute " + stride.start + " \xE0 " + stride.last
|
|
307
|
+
});
|
|
308
|
+
return secondsLeadClause(schedule, opts) + " " + head + tail + " de chaque heure" + trailingQualifier(schedule, opts);
|
|
309
|
+
}
|
|
310
|
+
function isSteppedMinuteSeconds(schedule, plan) {
|
|
311
|
+
return (plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes") && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step") && schedule.shapes.hour === "wildcard" && schedule.pattern.minute !== "*/2" && minuteStride(schedule) !== null;
|
|
312
|
+
}
|
|
277
313
|
function renderComposeSeconds(schedule, plan, opts) {
|
|
278
314
|
const hourCad = composeHourCadence(schedule, plan, opts);
|
|
279
315
|
if (hourCad !== null) {
|
|
@@ -292,6 +328,9 @@ function renderComposeSeconds(schedule, plan, opts) {
|
|
|
292
328
|
const cadence = "toutes les " + numero(stepSegment(schedule, "second").interval, opts) + " secondes de la minute " + schedule.pattern.minute;
|
|
293
329
|
return dayFrame + ", " + window + ", " + cadence;
|
|
294
330
|
}
|
|
331
|
+
if (isSteppedMinuteSeconds(schedule, plan)) {
|
|
332
|
+
return minuteStepConfinement(schedule, minuteStride(schedule), opts);
|
|
333
|
+
}
|
|
295
334
|
if (isEveryOtherMinuteSeconds(schedule, plan)) {
|
|
296
335
|
return secondsLeadClause(schedule, opts) + " de " + render(schedule, plan.rest, opts).replace(/^toutes les /u, "chaque ");
|
|
297
336
|
}
|
package/dist/lang/fr.js
CHANGED
|
@@ -184,6 +184,20 @@ var weekdayNames = [
|
|
|
184
184
|
"samedi"
|
|
185
185
|
];
|
|
186
186
|
var nthWeekdayMasculine = [null, "premier", "deuxi\xE8me", "troisi\xE8me", "quatri\xE8me", "cinqui\xE8me"];
|
|
187
|
+
var stepOrdinals = {
|
|
188
|
+
3: "troisi\xE8me",
|
|
189
|
+
4: "quatri\xE8me",
|
|
190
|
+
5: "cinqui\xE8me",
|
|
191
|
+
6: "sixi\xE8me",
|
|
192
|
+
7: "septi\xE8me",
|
|
193
|
+
8: "huiti\xE8me",
|
|
194
|
+
9: "neuvi\xE8me",
|
|
195
|
+
10: "dixi\xE8me",
|
|
196
|
+
12: "douzi\xE8me",
|
|
197
|
+
15: "quinzi\xE8me",
|
|
198
|
+
20: "vingti\xE8me",
|
|
199
|
+
30: "trenti\xE8me"
|
|
200
|
+
};
|
|
187
201
|
function normalizeOptions(options) {
|
|
188
202
|
options = options || {};
|
|
189
203
|
const style = resolveDialect(options.dialect);
|
|
@@ -248,6 +262,28 @@ function composeHourCadence(schedule, plan, opts) {
|
|
|
248
262
|
function isPinnedMinuteSeconds(schedule, plan) {
|
|
249
263
|
return plan.rest.kind === "clockTimes" && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step");
|
|
250
264
|
}
|
|
265
|
+
function minuteStride(schedule) {
|
|
266
|
+
if (schedule.shapes.minute === "step") {
|
|
267
|
+
const segment = stepSegment(schedule, "minute");
|
|
268
|
+
const start = segment.startToken === "*" ? 0 : +segment.startToken;
|
|
269
|
+
return { interval: segment.interval, last: segment.fires[segment.fires.length - 1], start };
|
|
270
|
+
}
|
|
271
|
+
const values = singleValues(segmentsOf(schedule, "minute"));
|
|
272
|
+
return values && arithmeticStep(values);
|
|
273
|
+
}
|
|
274
|
+
function minuteStepConfinement(schedule, stride, opts) {
|
|
275
|
+
const ordinal = stepOrdinals[stride.interval];
|
|
276
|
+
const head = ordinal ? "\xE0 la " + ordinal + " minute" : "\xE0 la minute toutes les " + numero(stride.interval, opts);
|
|
277
|
+
const tail = renderStride({ ...stride, cycle: 60 }, {
|
|
278
|
+
bare: () => "",
|
|
279
|
+
offset: () => " \xE0 partir de la minute " + stride.start,
|
|
280
|
+
bounded: () => " de la minute " + stride.start + " \xE0 " + stride.last
|
|
281
|
+
});
|
|
282
|
+
return secondsLeadClause(schedule, opts) + " " + head + tail + " de chaque heure" + trailingQualifier(schedule, opts);
|
|
283
|
+
}
|
|
284
|
+
function isSteppedMinuteSeconds(schedule, plan) {
|
|
285
|
+
return (plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes") && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step") && schedule.shapes.hour === "wildcard" && schedule.pattern.minute !== "*/2" && minuteStride(schedule) !== null;
|
|
286
|
+
}
|
|
251
287
|
function renderComposeSeconds(schedule, plan, opts) {
|
|
252
288
|
const hourCad = composeHourCadence(schedule, plan, opts);
|
|
253
289
|
if (hourCad !== null) {
|
|
@@ -266,6 +302,9 @@ function renderComposeSeconds(schedule, plan, opts) {
|
|
|
266
302
|
const cadence = "toutes les " + numero(stepSegment(schedule, "second").interval, opts) + " secondes de la minute " + schedule.pattern.minute;
|
|
267
303
|
return dayFrame + ", " + window + ", " + cadence;
|
|
268
304
|
}
|
|
305
|
+
if (isSteppedMinuteSeconds(schedule, plan)) {
|
|
306
|
+
return minuteStepConfinement(schedule, minuteStride(schedule), opts);
|
|
307
|
+
}
|
|
269
308
|
if (isEveryOtherMinuteSeconds(schedule, plan)) {
|
|
270
309
|
return secondsLeadClause(schedule, opts) + " de " + render(schedule, plan.rest, opts).replace(/^toutes les /u, "chaque ");
|
|
271
310
|
}
|
package/dist/lang/pt.cjs
CHANGED
|
@@ -232,6 +232,20 @@ function weekdayFeminine(number) {
|
|
|
232
232
|
}
|
|
233
233
|
var nthWeekdayMasculine = [null, "primeiro", "segundo", "terceiro", "quarto", "quinto"];
|
|
234
234
|
var nthWeekdayFeminine = [null, "primeira", "segunda", "terceira", "quarta", "quinta"];
|
|
235
|
+
var stepOrdinals = {
|
|
236
|
+
3: "terceiro",
|
|
237
|
+
4: "quarto",
|
|
238
|
+
5: "quinto",
|
|
239
|
+
6: "sexto",
|
|
240
|
+
7: "s\xE9timo",
|
|
241
|
+
8: "oitavo",
|
|
242
|
+
9: "nono",
|
|
243
|
+
10: "d\xE9cimo",
|
|
244
|
+
12: "d\xE9cimo segundo",
|
|
245
|
+
15: "d\xE9cimo quinto",
|
|
246
|
+
20: "vig\xE9simo",
|
|
247
|
+
30: "trig\xE9simo"
|
|
248
|
+
};
|
|
235
249
|
function noonMidnightArticle(phrase) {
|
|
236
250
|
if (phrase === "meio-dia") {
|
|
237
251
|
return "o";
|
|
@@ -361,6 +375,28 @@ function composeHourCadence(schedule, plan, opts) {
|
|
|
361
375
|
function isPinnedMinuteSeconds(schedule, plan) {
|
|
362
376
|
return plan.rest.kind === "clockTimes" && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step");
|
|
363
377
|
}
|
|
378
|
+
function minuteStride(schedule) {
|
|
379
|
+
if (schedule.shapes.minute === "step") {
|
|
380
|
+
const segment = stepSegment(schedule, "minute");
|
|
381
|
+
const start = segment.startToken === "*" ? 0 : +segment.startToken;
|
|
382
|
+
return { interval: segment.interval, last: segment.fires[segment.fires.length - 1], start };
|
|
383
|
+
}
|
|
384
|
+
const values = singleValues(segmentsOf(schedule, "minute"));
|
|
385
|
+
return values && arithmeticStep(values);
|
|
386
|
+
}
|
|
387
|
+
function minuteStepConfinement(schedule, stride, opts) {
|
|
388
|
+
const ordinal = stepOrdinals[stride.interval];
|
|
389
|
+
const head = ordinal ? "no " + ordinal + " minuto" : "a cada " + numero(stride.interval, opts) + " minutos";
|
|
390
|
+
const tail = renderStride({ ...stride, cycle: 60 }, {
|
|
391
|
+
bare: () => "",
|
|
392
|
+
offset: () => " a partir do minuto " + stride.start,
|
|
393
|
+
bounded: () => " do minuto " + stride.start + " ao " + stride.last
|
|
394
|
+
});
|
|
395
|
+
return secondsLeadClause(schedule, opts) + " " + head + tail + " de cada hora" + trailingQualifier(schedule, opts);
|
|
396
|
+
}
|
|
397
|
+
function isSteppedMinuteSeconds(schedule, plan) {
|
|
398
|
+
return (plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes") && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step") && schedule.shapes.hour === "wildcard" && schedule.pattern.minute !== "*/2" && minuteStride(schedule) !== null;
|
|
399
|
+
}
|
|
364
400
|
function renderComposeSeconds(schedule, plan, opts) {
|
|
365
401
|
const hourCad = composeHourCadence(schedule, plan, opts);
|
|
366
402
|
if (hourCad !== null) {
|
|
@@ -379,6 +415,9 @@ function renderComposeSeconds(schedule, plan, opts) {
|
|
|
379
415
|
const cadence = "a cada " + numero(stepSegment(schedule, "second").interval, opts) + " segundos do minuto " + schedule.pattern.minute;
|
|
380
416
|
return dayFrame + ", " + window + ", " + cadence;
|
|
381
417
|
}
|
|
418
|
+
if (isSteppedMinuteSeconds(schedule, plan)) {
|
|
419
|
+
return minuteStepConfinement(schedule, minuteStride(schedule), opts);
|
|
420
|
+
}
|
|
382
421
|
if (isEveryOtherMinuteSeconds(schedule, plan)) {
|
|
383
422
|
const rest = render(schedule, plan.rest, opts).replace(/^a /u, "");
|
|
384
423
|
return secondsLeadClause(schedule, opts) + " de " + rest;
|
package/dist/lang/pt.js
CHANGED
|
@@ -206,6 +206,20 @@ function weekdayFeminine(number) {
|
|
|
206
206
|
}
|
|
207
207
|
var nthWeekdayMasculine = [null, "primeiro", "segundo", "terceiro", "quarto", "quinto"];
|
|
208
208
|
var nthWeekdayFeminine = [null, "primeira", "segunda", "terceira", "quarta", "quinta"];
|
|
209
|
+
var stepOrdinals = {
|
|
210
|
+
3: "terceiro",
|
|
211
|
+
4: "quarto",
|
|
212
|
+
5: "quinto",
|
|
213
|
+
6: "sexto",
|
|
214
|
+
7: "s\xE9timo",
|
|
215
|
+
8: "oitavo",
|
|
216
|
+
9: "nono",
|
|
217
|
+
10: "d\xE9cimo",
|
|
218
|
+
12: "d\xE9cimo segundo",
|
|
219
|
+
15: "d\xE9cimo quinto",
|
|
220
|
+
20: "vig\xE9simo",
|
|
221
|
+
30: "trig\xE9simo"
|
|
222
|
+
};
|
|
209
223
|
function noonMidnightArticle(phrase) {
|
|
210
224
|
if (phrase === "meio-dia") {
|
|
211
225
|
return "o";
|
|
@@ -335,6 +349,28 @@ function composeHourCadence(schedule, plan, opts) {
|
|
|
335
349
|
function isPinnedMinuteSeconds(schedule, plan) {
|
|
336
350
|
return plan.rest.kind === "clockTimes" && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step");
|
|
337
351
|
}
|
|
352
|
+
function minuteStride(schedule) {
|
|
353
|
+
if (schedule.shapes.minute === "step") {
|
|
354
|
+
const segment = stepSegment(schedule, "minute");
|
|
355
|
+
const start = segment.startToken === "*" ? 0 : +segment.startToken;
|
|
356
|
+
return { interval: segment.interval, last: segment.fires[segment.fires.length - 1], start };
|
|
357
|
+
}
|
|
358
|
+
const values = singleValues(segmentsOf(schedule, "minute"));
|
|
359
|
+
return values && arithmeticStep(values);
|
|
360
|
+
}
|
|
361
|
+
function minuteStepConfinement(schedule, stride, opts) {
|
|
362
|
+
const ordinal = stepOrdinals[stride.interval];
|
|
363
|
+
const head = ordinal ? "no " + ordinal + " minuto" : "a cada " + numero(stride.interval, opts) + " minutos";
|
|
364
|
+
const tail = renderStride({ ...stride, cycle: 60 }, {
|
|
365
|
+
bare: () => "",
|
|
366
|
+
offset: () => " a partir do minuto " + stride.start,
|
|
367
|
+
bounded: () => " do minuto " + stride.start + " ao " + stride.last
|
|
368
|
+
});
|
|
369
|
+
return secondsLeadClause(schedule, opts) + " " + head + tail + " de cada hora" + trailingQualifier(schedule, opts);
|
|
370
|
+
}
|
|
371
|
+
function isSteppedMinuteSeconds(schedule, plan) {
|
|
372
|
+
return (plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes") && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step") && schedule.shapes.hour === "wildcard" && schedule.pattern.minute !== "*/2" && minuteStride(schedule) !== null;
|
|
373
|
+
}
|
|
338
374
|
function renderComposeSeconds(schedule, plan, opts) {
|
|
339
375
|
const hourCad = composeHourCadence(schedule, plan, opts);
|
|
340
376
|
if (hourCad !== null) {
|
|
@@ -353,6 +389,9 @@ function renderComposeSeconds(schedule, plan, opts) {
|
|
|
353
389
|
const cadence = "a cada " + numero(stepSegment(schedule, "second").interval, opts) + " segundos do minuto " + schedule.pattern.minute;
|
|
354
390
|
return dayFrame + ", " + window + ", " + cadence;
|
|
355
391
|
}
|
|
392
|
+
if (isSteppedMinuteSeconds(schedule, plan)) {
|
|
393
|
+
return minuteStepConfinement(schedule, minuteStride(schedule), opts);
|
|
394
|
+
}
|
|
356
395
|
if (isEveryOtherMinuteSeconds(schedule, plan)) {
|
|
357
396
|
const rest = render(schedule, plan.rest, opts).replace(/^a /u, "");
|
|
358
397
|
return secondsLeadClause(schedule, opts) + " de " + rest;
|
package/dist/lang/zh.cjs
CHANGED
|
@@ -613,7 +613,7 @@ function composeSecondsOnHour(schedule, plan, opts) {
|
|
|
613
613
|
return "\u6BCF\u5929" + restText + secTail;
|
|
614
614
|
}
|
|
615
615
|
if (rest.kind === "singleMinute") {
|
|
616
|
-
return restText + "\uFF0C" + sec;
|
|
616
|
+
return secondIsCadence(schedule) ? restText + confinedSecondTail(sec) : restText + "\uFF0C" + sec;
|
|
617
617
|
}
|
|
618
618
|
return restText + secTail;
|
|
619
619
|
}
|
|
@@ -683,7 +683,7 @@ function composeSecondsListed(schedule) {
|
|
|
683
683
|
return hourWord(hourFires(schedule)[0]) + minuteCad + "\u7684\u6BCF\u4E00\u79D2";
|
|
684
684
|
}
|
|
685
685
|
if (schedule.shapes.hour === "wildcard") {
|
|
686
|
-
return minutes + "\uFF0C" + sec;
|
|
686
|
+
return secondIsCadence(schedule) ? minutes + confinedSecondTail(sec) : minutes + "\uFF0C" + sec;
|
|
687
687
|
}
|
|
688
688
|
const hourCad = unevenHourCadence(schedule);
|
|
689
689
|
if (hourCad !== null) {
|
|
@@ -691,9 +691,31 @@ function composeSecondsListed(schedule) {
|
|
|
691
691
|
}
|
|
692
692
|
return hourFrame(schedule) + minutes + "\uFF0C" + sec;
|
|
693
693
|
}
|
|
694
|
+
function isMinuteStride(schedule) {
|
|
695
|
+
if (schedule.shapes.minute === "step") {
|
|
696
|
+
return true;
|
|
697
|
+
}
|
|
698
|
+
const values = singleValues(segmentsOf(schedule, "minute"));
|
|
699
|
+
return values !== null && arithmeticStep(values) !== null;
|
|
700
|
+
}
|
|
701
|
+
function secondIsCadence(schedule) {
|
|
702
|
+
return schedule.pattern.second === "*" || schedule.shapes.second === "step";
|
|
703
|
+
}
|
|
704
|
+
function confinedSecondTail(sec) {
|
|
705
|
+
return sec === "\u6BCF\u79D2" ? "\u7684\u6BCF\u4E00\u79D2" : "\u7684" + sec;
|
|
706
|
+
}
|
|
707
|
+
function isSteppedMinuteSeconds(schedule, composedClock) {
|
|
708
|
+
return !composedClock && schedule.shapes.hour === "wildcard" && secondIsCadence(schedule) && schedule.pattern.minute !== "*/2" && isMinuteStride(schedule);
|
|
709
|
+
}
|
|
710
|
+
function minuteStrideConfinement(schedule) {
|
|
711
|
+
return minuteHourClause(schedule) + confinedSecondTail(secondClause(schedule));
|
|
712
|
+
}
|
|
694
713
|
function renderComposeSeconds(schedule, plan, opts) {
|
|
695
714
|
const { rest } = plan;
|
|
696
715
|
const composedClock = rest.kind === "clockTimes" || rest.kind === "compactClockTimes";
|
|
716
|
+
if (isSteppedMinuteSeconds(schedule, composedClock)) {
|
|
717
|
+
return minuteStrideConfinement(schedule);
|
|
718
|
+
}
|
|
697
719
|
if (schedule.pattern.minute === "0" || composedClock && schedule.shapes.minute === "single") {
|
|
698
720
|
return composeSecondsOnHour(schedule, plan, opts);
|
|
699
721
|
}
|
package/dist/lang/zh.js
CHANGED
|
@@ -587,7 +587,7 @@ function composeSecondsOnHour(schedule, plan, opts) {
|
|
|
587
587
|
return "\u6BCF\u5929" + restText + secTail;
|
|
588
588
|
}
|
|
589
589
|
if (rest.kind === "singleMinute") {
|
|
590
|
-
return restText + "\uFF0C" + sec;
|
|
590
|
+
return secondIsCadence(schedule) ? restText + confinedSecondTail(sec) : restText + "\uFF0C" + sec;
|
|
591
591
|
}
|
|
592
592
|
return restText + secTail;
|
|
593
593
|
}
|
|
@@ -657,7 +657,7 @@ function composeSecondsListed(schedule) {
|
|
|
657
657
|
return hourWord(hourFires(schedule)[0]) + minuteCad + "\u7684\u6BCF\u4E00\u79D2";
|
|
658
658
|
}
|
|
659
659
|
if (schedule.shapes.hour === "wildcard") {
|
|
660
|
-
return minutes + "\uFF0C" + sec;
|
|
660
|
+
return secondIsCadence(schedule) ? minutes + confinedSecondTail(sec) : minutes + "\uFF0C" + sec;
|
|
661
661
|
}
|
|
662
662
|
const hourCad = unevenHourCadence(schedule);
|
|
663
663
|
if (hourCad !== null) {
|
|
@@ -665,9 +665,31 @@ function composeSecondsListed(schedule) {
|
|
|
665
665
|
}
|
|
666
666
|
return hourFrame(schedule) + minutes + "\uFF0C" + sec;
|
|
667
667
|
}
|
|
668
|
+
function isMinuteStride(schedule) {
|
|
669
|
+
if (schedule.shapes.minute === "step") {
|
|
670
|
+
return true;
|
|
671
|
+
}
|
|
672
|
+
const values = singleValues(segmentsOf(schedule, "minute"));
|
|
673
|
+
return values !== null && arithmeticStep(values) !== null;
|
|
674
|
+
}
|
|
675
|
+
function secondIsCadence(schedule) {
|
|
676
|
+
return schedule.pattern.second === "*" || schedule.shapes.second === "step";
|
|
677
|
+
}
|
|
678
|
+
function confinedSecondTail(sec) {
|
|
679
|
+
return sec === "\u6BCF\u79D2" ? "\u7684\u6BCF\u4E00\u79D2" : "\u7684" + sec;
|
|
680
|
+
}
|
|
681
|
+
function isSteppedMinuteSeconds(schedule, composedClock) {
|
|
682
|
+
return !composedClock && schedule.shapes.hour === "wildcard" && secondIsCadence(schedule) && schedule.pattern.minute !== "*/2" && isMinuteStride(schedule);
|
|
683
|
+
}
|
|
684
|
+
function minuteStrideConfinement(schedule) {
|
|
685
|
+
return minuteHourClause(schedule) + confinedSecondTail(secondClause(schedule));
|
|
686
|
+
}
|
|
668
687
|
function renderComposeSeconds(schedule, plan, opts) {
|
|
669
688
|
const { rest } = plan;
|
|
670
689
|
const composedClock = rest.kind === "clockTimes" || rest.kind === "compactClockTimes";
|
|
690
|
+
if (isSteppedMinuteSeconds(schedule, composedClock)) {
|
|
691
|
+
return minuteStrideConfinement(schedule);
|
|
692
|
+
}
|
|
671
693
|
if (schedule.pattern.minute === "0" || composedClock && schedule.shapes.minute === "single") {
|
|
672
694
|
return composeSecondsOnHour(schedule, plan, opts);
|
|
673
695
|
}
|