UNPKG

1.64 kBJavaScriptView Raw
1import { RRule } from '../rrule';
2import { empty, repeat, pymod } from '../helpers';
3export function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {
4 var result = {
5 lastyear: year,
6 lastmonth: month,
7 nwdaymask: [],
8 };
9 var ranges = [];
10 if (options.freq === RRule.YEARLY) {
11 if (empty(options.bymonth)) {
12 ranges = [[0, yearlen]];
13 }
14 else {
15 for (var j = 0; j < options.bymonth.length; j++) {
16 month = options.bymonth[j];
17 ranges.push(mrange.slice(month - 1, month + 1));
18 }
19 }
20 }
21 else if (options.freq === RRule.MONTHLY) {
22 ranges = [mrange.slice(month - 1, month + 1)];
23 }
24 if (empty(ranges)) {
25 return result;
26 }
27 // Weekly frequency won't get here, so we may not
28 // care about cross-year weekly periods.
29 result.nwdaymask = repeat(0, yearlen);
30 for (var j = 0; j < ranges.length; j++) {
31 var rang = ranges[j];
32 var first = rang[0];
33 var last = rang[1] - 1;
34 for (var k = 0; k < options.bynweekday.length; k++) {
35 var i = void 0;
36 var _a = options.bynweekday[k], wday = _a[0], n = _a[1];
37 if (n < 0) {
38 i = last + (n + 1) * 7;
39 i -= pymod(wdaymask[i] - wday, 7);
40 }
41 else {
42 i = first + (n - 1) * 7;
43 i += pymod(7 - wdaymask[i] + wday, 7);
44 }
45 if (first <= i && i <= last)
46 result.nwdaymask[i] = 1;
47 }
48 }
49 return result;
50}
51//# sourceMappingURL=monthinfo.js.map
\No newline at end of file