UNPKG

react-native-jewish-calendar

Version:
171 lines 6.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.YEARBETWEENGEROGIANTOJEWISH = 3761; exports.MILISECONDINDAY = 1000 * 60 * 60 * 24; var YEAR_LENGTH; (function (YEAR_LENGTH) { YEAR_LENGTH["HASER"] = "\u05D7"; YEAR_LENGTH["SHLEMA"] = "\u05E9"; YEAR_LENGTH["KASEDER"] = "\u05DB"; })(YEAR_LENGTH || (YEAR_LENGTH = {})); var YEAR_MONTHS; (function (YEAR_MONTHS) { YEAR_MONTHS["TESHRI"] = "\u05EA\u05E9\u05E8\u05D9"; YEAR_MONTHS["HESVAN"] = "\u05D7\u05E9\u05D5\u05DF"; YEAR_MONTHS["KESLEV"] = "\u05DB\u05E1\u05DC\u05D5"; YEAR_MONTHS["TEVET"] = "\u05D8\u05D1\u05EA"; YEAR_MONTHS["SHVAT"] = "\u05E9\u05D1\u05D8"; YEAR_MONTHS["ADAR"] = "\u05D0\u05D3\u05E8"; YEAR_MONTHS["ADARA"] = "\u05D0\u05D3\u05E8 \u05D0'"; YEAR_MONTHS["ADARB"] = "\u05D0\u05D3\u05E8 \u05D1'"; YEAR_MONTHS["NISAN"] = "\u05E0\u05D9\u05E1\u05DF"; YEAR_MONTHS["IAR"] = "\u05D0\u05D9\u05D9\u05E8"; YEAR_MONTHS["SIVAN"] = "\u05E1\u05D9\u05D5\u05DF"; YEAR_MONTHS["TAMUZ"] = "\u05EA\u05DE\u05D5\u05D6"; YEAR_MONTHS["AV"] = "\u05D0\u05D1"; YEAR_MONTHS["ELOL"] = "\u05D0\u05DC\u05D5\u05DC"; })(YEAR_MONTHS = exports.YEAR_MONTHS || (exports.YEAR_MONTHS = {})); var DAYS_WEEK; (function (DAYS_WEEK) { DAYS_WEEK["RESON"] = "\u05E8\u05D0\u05E9\u05D5\u05DF"; DAYS_WEEK["SHENI"] = "\u05E9\u05E0\u05D9"; DAYS_WEEK["SHLISHI"] = "\u05E9\u05DC\u05D9\u05E9\u05D9"; DAYS_WEEK["REVEI"] = "\u05E8\u05D1\u05D9\u05E2\u05D9"; DAYS_WEEK["HAMESHI"] = "\u05D7\u05DE\u05D9\u05E9\u05D9"; DAYS_WEEK["SHISHI"] = "\u05E9\u05D9\u05E9\u05D9"; DAYS_WEEK["SHABAT"] = "\u05E9\u05D1\u05EA"; })(DAYS_WEEK = exports.DAYS_WEEK || (exports.DAYS_WEEK = {})); exports.MONTHES = ['', YEAR_MONTHS.TESHRI, YEAR_MONTHS.HESVAN, YEAR_MONTHS.KESLEV, YEAR_MONTHS.TEVET, YEAR_MONTHS.SHVAT, YEAR_MONTHS.ADAR, YEAR_MONTHS.ADARB, YEAR_MONTHS.NISAN, YEAR_MONTHS.IAR, YEAR_MONTHS.SIVAN, YEAR_MONTHS.TAMUZ, YEAR_MONTHS.AV, YEAR_MONTHS.ELOL]; exports.WEEKDAY = [DAYS_WEEK.RESON, DAYS_WEEK.SHENI, DAYS_WEEK.SHLISHI, DAYS_WEEK.REVEI, DAYS_WEEK.HAMESHI, DAYS_WEEK.SHISHI, DAYS_WEEK.SHABAT]; /** * find the day in September that Rosh Hashana occour. * @param {number} year a georigian year * @returns {Date} the georgian date of rosh hashana * @see calculate rosh hashana day https://quasar.as.utexas.edu/BillInfo/ReligiousCalendars.html */ function dayOfRoshHashana(year) { let gn = (year % 19) + 1; let n = Math.floor(year / 100) - Math.floor(year / 400) - 2 + 765433 / 492480 * ((12 * gn) % 19) + (year % 4) / 4 - (313 * year + 89081) / 98496; let r = n % 1; n = Math.floor(n); let d = new Date(year, 8, n).getDay(); let r1 = (12 * gn) % 19; if (d == 0 || d == 3 || d == 5) { n += 1; } else if (d == 1 && r >= (23269 / 25920) && r1 > 11) { n += 1; } else if (d == 2 && r >= (1367 / 2160) && r1 > 6) { n += 2; } return fixedDate(new Date(year, 8, n)); } exports.dayOfRoshHashana = dayOfRoshHashana; /** * return the Gimatria value of a number * @param {number} num a number to as gimatria value */ function gimatria(num) { if (typeof (num) == typeof ('1')) { num = parseInt(num); } const to10 = ['', 'א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ז', 'ח', 'ט']; const to100 = ['', 'י', 'כ', 'ל', 'מ', 'נ', 'ס', 'ע', 'פ', 'צ']; const to1000 = ['', 'ק', 'ר', 'ש', 'ת', 'תק', 'תר', 'תש', 'תת', 'תתק']; num = Math.floor(num); if (num > 1000) { return gimatria(Math.floor(num / 1000)) + "'" + gimatria(num % 1000); } let g = to1000[Math.floor(num / 100)] + to100[Math.floor((num % 100) / 10)] + to10[num % 10]; g = '' + g; g = g.replace('יה', 'טו').replace('יו', 'טז'); return g; } exports.gimatria = gimatria; /** * return the days in hebew year * @param {number} year hebrew year to find her length */ function daysInYear(year) { let rosh = dayOfRoshHashana(year - exports.YEARBETWEENGEROGIANTOJEWISH); let nextYear = dayOfRoshHashana(year - exports.YEARBETWEENGEROGIANTOJEWISH + 1); return (nextYear.getTime() - rosh.getTime()) / exports.MILISECONDINDAY; } exports.daysInYear = daysInYear; function daysInMonth(month, isLeap, daysInYear) { switch (month) { case YEAR_MONTHS.KESLEV: return daysInYear % 10 === 3 ? 29 : 30; case YEAR_MONTHS.HESVAN: return daysInYear % 10 === 5 ? 30 : 29; case YEAR_MONTHS.ADAR: return isLeap ? 30 : 29; case YEAR_MONTHS.TESHRI: case YEAR_MONTHS.SHVAT: case YEAR_MONTHS.NISAN: case YEAR_MONTHS.SIVAN: case YEAR_MONTHS.AV: return 30; case YEAR_MONTHS.TEVET: case YEAR_MONTHS.ADARB: case YEAR_MONTHS.IAR: case YEAR_MONTHS.TAMUZ: case YEAR_MONTHS.ELOL: return 29; default: throw new Error(`no such month ${month}`); } } exports.daysInMonth = daysInMonth; function fixedDate(d) { //d.setHours(d.getHours() + 3) // fixed to GMC +3 return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 3); } exports.fixedDate = fixedDate; class YearType { constructor(_rosh, _daysInYear, _leap) { this.rosh = _rosh; this.daysInYear = _daysInYear; this.leap = _leap; this.findType(); this.findPesahDate(); } findPesahDate() { if (this.length === YEAR_LENGTH.HASER) { this.pesah = new Date(this.rosh.getTime() + ((this.leap ? 220 : 190) * exports.MILISECONDINDAY)); } else if (this.length == YEAR_LENGTH.KASEDER) { this.pesah = new Date(this.rosh.getTime() + ((this.leap ? 221 : 191) * exports.MILISECONDINDAY)); } else { this.pesah = new Date(this.rosh.getTime() + ((this.leap ? 222 : 192) * exports.MILISECONDINDAY)); } } findType() { if (this.daysInYear % 10 == 3) this.length = YEAR_LENGTH.HASER; else if (this.daysInYear % 10 == 4) this.length = YEAR_LENGTH.KASEDER; else this.length = YEAR_LENGTH.SHLEMA; } getRoshHashanaDayInWeek() { return gimatria(this.rosh.getDay() + 1); } getPesahDayInWeek() { return gimatria(this.pesah.getDay() + 1); } getYearLength() { return this.length; } toString() { return this.getRoshHashanaDayInWeek() + this.getYearLength() + this.getPesahDayInWeek(); } } exports.YearType = YearType; //# sourceMappingURL=Common.js.map