1 | import { RRule } from '../rrule';
|
2 | import { empty, repeat, pymod } from '../helpers';
|
3 | export 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 |
|
28 |
|
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 |
|
\ | No newline at end of file |