UNPKG

retail-calendar

Version:
37 lines (36 loc) 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var date_utils_1 = require("./date_utils"); var CustomLeapYearStrategy = /** @class */ (function () { function CustomLeapYearStrategy(leapYear, leapYearEndDate, leapYearFrequency) { this.leapYear = leapYear; this.leapYearEndDate = leapYearEndDate; this.leapYearFrequency = leapYearFrequency; } CustomLeapYearStrategy.prototype.getLastDayForGregorianLastDay = function (lastDayOfGregorianYear, isoLastDayOfWeek, retailCalendarYear) { var startCalendarYear = this.leapYear; var startYearEndDate = this.leapYearEndDate; var yearDifference = retailCalendarYear - startCalendarYear; var yearEndDate = date_utils_1.createDateFromYYYYMMDD(this.leapYearEndDate); if (yearDifference > 0) { // start at the startCalendarYear + 1, because we already have the end date for the startCalendarYear for (var i = startCalendarYear + 1; i <= retailCalendarYear; i += 1) { var isLeapYear = Math.abs(i - startCalendarYear) % this.leapYearFrequency === 0; var numberOfWeeks = isLeapYear ? 53 : 52; yearEndDate = date_utils_1.addWeeksToDate(yearEndDate, numberOfWeeks); } return yearEndDate; } else if (yearDifference < 0) { for (var i = startCalendarYear; i > retailCalendarYear; i -= 1) { var isLeapYear = Math.abs(i - startCalendarYear) % this.leapYearFrequency === 0; var numberOfWeeks = isLeapYear ? 53 : 52; yearEndDate = date_utils_1.addWeeksToDate(yearEndDate, -numberOfWeeks); } return yearEndDate; } return yearEndDate; }; return CustomLeapYearStrategy; }()); exports.CustomLeapYearStrategy = CustomLeapYearStrategy;