(year, month, yearlen, mrange, wdaymask, options)
| 17440 | return { mmask: M366MASK, mdaymask: MDAY366MASK, nmdaymask: NMDAY366MASK, wdaymask: WDAYMASK.slice(wday), mrange: M366RANGE }; |
| 17441 | } |
| 17442 | function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) { |
| 17443 | var result = { lastyear: year, lastmonth: month, nwdaymask: [] }; |
| 17444 | var ranges = []; |
| 17445 | if (options.freq === RRule.YEARLY) { |
| 17446 | if (empty(options.bymonth)) { |
| 17447 | ranges = [[0, yearlen]]; |
| 17448 | } else { |
| 17449 | for (var j = 0; j < options.bymonth.length; j++) { |
| 17450 | month = options.bymonth[j]; |
| 17451 | ranges.push(mrange.slice(month - 1, month + 1)); |
| 17452 | } |
| 17453 | } |
| 17454 | } else if (options.freq === RRule.MONTHLY) { |
| 17455 | ranges = [mrange.slice(month - 1, month + 1)]; |
| 17456 | } |
| 17457 | if (empty(ranges)) { |
| 17458 | return result; |
| 17459 | } |
| 17460 | result.nwdaymask = repeat(0, yearlen); |
| 17461 | for (var j = 0; j < ranges.length; j++) { |
| 17462 | var rang = ranges[j]; |
| 17463 | var first = rang[0]; |
| 17464 | var last = rang[1] - 1; |
| 17465 | for (var k = 0; k < options.bynweekday.length; k++) { |
| 17466 | var i = void 0; |
| 17467 | var _a = options.bynweekday[k], wday = _a[0], n = _a[1]; |
| 17468 | if (n < 0) { |
| 17469 | i = last + (n + 1) * 7; |
| 17470 | i -= pymod(wdaymask[i] - wday, 7); |
| 17471 | } else { |
| 17472 | i = first + (n - 1) * 7; |
| 17473 | i += pymod(7 - wdaymask[i] + wday, 7); |
| 17474 | } |
| 17475 | if (first <= i && i <= last) |
| 17476 | result.nwdaymask[i] = 1; |
| 17477 | } |
| 17478 | } |
| 17479 | return result; |
| 17480 | } |
| 17481 | function easter(y, offset) { |
| 17482 | if (offset === void 0) { |
| 17483 | offset = 0; |
no test coverage detected