UNPKG

1.89 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = eachWeekendOfInterval;
7
8var _index = _interopRequireDefault(require("../eachDayOfInterval/index.js"));
9
10var _index2 = _interopRequireDefault(require("../isSunday/index.js"));
11
12var _index3 = _interopRequireDefault(require("../isWeekend/index.js"));
13
14var _index4 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
15
16function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18/**
19 * @name eachWeekendOfInterval
20 * @category Interval Helpers
21 * @summary List all the Saturdays and Sundays in the given date interval.
22 *
23 * @description
24 * Get all the Saturdays and Sundays in the given date interval.
25 *
26 * @param {Interval} interval - the given interval. See [Interval]{@link docs/types/Interval}
27 * @returns {Date[]} an array containing all the Saturdays and Sundays
28 * @throws {TypeError} 1 argument required
29 * @throws {RangeError} The start of an interval cannot be after its end
30 * @throws {RangeError} Date in interval cannot be `Invalid Date`
31 *
32 * @example
33 * // Lists all Saturdays and Sundays in the given date interval
34 * var result = eachWeekendOfInterval({
35 * start: new Date(2018, 8, 17),
36 * end: new Date(2018, 8, 30)
37 * })
38 * //=> [
39 * // Sat Sep 22 2018 00:00:00,
40 * // Sun Sep 23 2018 00:00:00,
41 * // Sat Sep 29 2018 00:00:00,
42 * // Sun Sep 30 2018 00:00:00
43 * // ]
44 */
45function eachWeekendOfInterval(interval) {
46 (0, _index4.default)(1, arguments);
47 var dateInterval = (0, _index.default)(interval);
48 var weekends = [];
49 var index = 0;
50
51 while (index < dateInterval.length) {
52 var date = dateInterval[index++];
53
54 if ((0, _index3.default)(date)) {
55 weekends.push(date);
56 if ((0, _index2.default)(date)) index = index + 5;
57 }
58 }
59
60 return weekends;
61}
62
63module.exports = exports.default;
\No newline at end of file