//! moment-holiday.js locale configuration //! locale : pascha Related Holidays //! author : Kodie Grantham : https://github.com/kodie //(function() { // var moment = (typeof require !== 'undefined' && require !== null) && !require.amd ? require('moment') : this.moment; function init(moment) { // moment.holidays.pascha = { moment.modifyHolidays.add({ "Lent": { date: 'pascha-46|pascha-3' }, /* "Holy Monday": { date: 'pascha-6', keywords_y: ['great', 'monday'] }, "Holy Tuesday": { date: 'pascha-5', keywords_y: ['great', 'tuesday'] }, "Holy Wednesday": { date: 'pascha-4', keywords_y: ['great', 'wednesday'] }, "Holy Thursday": { date: 'pascha-3', keywords_y: ['great', 'thursday'] }, "Holy Friday": { date: 'pascha-2', keywords_y: ['great', 'friday'] }, "Holy Saturday": { date: 'pascha-1', keywords_y: ['holy', 'saturday'] }, */ "Pascha Sunday": { date: 'pascha', keywords_y: ['pascha'], keywords: ['sunday'] }, "Bright Week": { date: 'pascha+1|pascha+6' }, "Pentecost Sunday": { date: 'pascha+49', keywords_y: ['pentecost'], keywords: ['sunday'] }, //}; }); /** * Calculates Easter in the Gregorian/Western (Catholic and Protestant) calendar * based on the algorithm by Oudin (1940) from http://www.tondering.dk/claus/cal/easter.php * @returns {array} [int month, int day] */ var pascha = function(year) { var f = Math.floor, // Golden Number - 1 G = year % 19, C = f(year / 100), // related to Epact H = (C - f(C / 4) - f((8 * C + 13)/25) + 19 * G + 15) % 30, // number of days from 21 March to the Paschal full moon I = H - f(H/28) * (1 - f(29/(H + 1)) * f((21-G)/11)), // weekday for the Paschal full moon J = (year + f(year / 4) + I + 2 - C + f(C / 4)) % 7, // number of days from 21 March to the Sunday on or before the Paschal full moon L = I - J, month = 3 + f((L + 40)/44), day = L + 28 - 31 * f(month / 4); return moment([year, (month - 1),day]); } moment.modifyHolidays.extendParser(function(m, date){ if (~date.indexOf('pascha')) { var dates = date.split('|'); var ds = []; for (var i = 0; i < dates.length; i++) { if (dates[i].substring(0, 6) === 'pascha') { var e = pascha(m.year()); if (dates[i].charAt(6) === '-') { e.subtract(dates[i].substring(7), 'days'); } if (dates[i].charAt(6) === '+') { e.add(dates[i].substring(7), 'days'); } if (dates.length === 1) { return e; } ds.push(e.format('M/D')); } else { ds.push(dates[i]); } } if (ds.length) { return ds.join('|'); } } }); console.log("Pascha initialized"); } module.exports = init; // if ((typeof module !== 'undefined' && module !== null ? module.exports : void 0) != null) { module.exports = moment; } //}).call(this);