@hebcal/core 3.50.3 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -383
- package/dist/bundle.js +368 -835
- package/dist/bundle.min.js +2 -2
- package/dist/greg0.mjs +1 -1
- package/dist/hdate-bundle.js +28 -9
- package/dist/hdate-bundle.min.js +2 -2
- package/dist/hdate.js +28 -10
- package/dist/hdate.mjs +29 -10
- package/dist/hdate0-bundle.js +19 -5
- package/dist/hdate0-bundle.min.js +2 -2
- package/dist/hdate0.mjs +20 -5
- package/dist/index.js +181 -666
- package/dist/index.mjs +181 -657
- package/hebcal.d.ts +18 -103
- package/package.json +12 -12
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @hebcal/core
|
|
1
|
+
/*! @hebcal/core v4.0.0 */
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
/*
|
|
@@ -434,7 +434,7 @@ class Locale {
|
|
|
434
434
|
/**
|
|
435
435
|
* Register locale translations.
|
|
436
436
|
* @param {string} locale Locale name (i.e.: `'he'`, `'fr'`)
|
|
437
|
-
* @param {
|
|
437
|
+
* @param {LocaleData} data parsed data from a `.po` file.
|
|
438
438
|
*/
|
|
439
439
|
static addLocale(locale, data) {
|
|
440
440
|
if (typeof data.contexts !== 'object' || typeof data.contexts[''] !== 'object') {
|
|
@@ -597,6 +597,17 @@ const EPOCH = -1373428;
|
|
|
597
597
|
// Avg year length in the cycle (19 solar years with 235 lunar months)
|
|
598
598
|
const AVG_HEBYEAR_DAYS = 365.24682220597794;
|
|
599
599
|
|
|
600
|
+
/**
|
|
601
|
+
* @private
|
|
602
|
+
* @param {any} n
|
|
603
|
+
* @param {string} name
|
|
604
|
+
*/
|
|
605
|
+
function assertNumber(n, name) {
|
|
606
|
+
if (typeof n !== 'number' || isNaN(n)) {
|
|
607
|
+
throw new TypeError(`invalid parameter '${name}' not a number: ${n}`);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
|
|
600
611
|
/**
|
|
601
612
|
* Converts Hebrew date to R.D. (Rata Die) fixed days.
|
|
602
613
|
* R.D. 1 is the imaginary date Monday, January 1, 1 on the Gregorian
|
|
@@ -608,6 +619,9 @@ const AVG_HEBYEAR_DAYS = 365.24682220597794;
|
|
|
608
619
|
* @return {number}
|
|
609
620
|
*/
|
|
610
621
|
function hebrew2abs(year, month, day) {
|
|
622
|
+
assertNumber(year, 'year');
|
|
623
|
+
assertNumber(month, 'month');
|
|
624
|
+
assertNumber(day, 'day');
|
|
611
625
|
if (year < 1) {
|
|
612
626
|
throw new RangeError(`hebrew2abs: invalid year ${year}`);
|
|
613
627
|
}
|
|
@@ -643,9 +657,7 @@ function newYear(year) {
|
|
|
643
657
|
* @return {SimpleHebrewDate}
|
|
644
658
|
*/
|
|
645
659
|
function abs2hebrew(abs) {
|
|
646
|
-
|
|
647
|
-
throw new TypeError(`invalid parameter to abs2hebrew ${abs}`);
|
|
648
|
-
}
|
|
660
|
+
assertNumber(abs, 'abs');
|
|
649
661
|
abs = Math.trunc(abs);
|
|
650
662
|
if (abs <= EPOCH) {
|
|
651
663
|
throw new RangeError(`abs2hebrew: ${abs} is before epoch`);
|
|
@@ -720,7 +732,9 @@ function daysInMonth(month, year) {
|
|
|
720
732
|
* @return {string}
|
|
721
733
|
*/
|
|
722
734
|
function getMonthName(month, year) {
|
|
723
|
-
|
|
735
|
+
assertNumber(month, 'month');
|
|
736
|
+
assertNumber(year, 'year');
|
|
737
|
+
if (month < 1 || month > 14) {
|
|
724
738
|
throw new TypeError(`bad month argument ${month}`);
|
|
725
739
|
}
|
|
726
740
|
return monthNames[+isLeapYear(year)][month];
|
|
@@ -1146,11 +1160,13 @@ class HDate {
|
|
|
1146
1160
|
* import {HDate, months} from '@hebcal/core';
|
|
1147
1161
|
* const hd = new HDate(15, months.CHESHVAN, 5769);
|
|
1148
1162
|
* console.log(hd.renderGematriya()); // 'ט״ו חֶשְׁוָן תשס״ט'
|
|
1163
|
+
* @param {boolean} [suppressNikud]
|
|
1149
1164
|
* @return {string}
|
|
1150
1165
|
*/
|
|
1151
|
-
renderGematriya() {
|
|
1166
|
+
renderGematriya(suppressNikud = false) {
|
|
1152
1167
|
const d = this.getDate();
|
|
1153
|
-
const
|
|
1168
|
+
const locale = suppressNikud ? 'he-x-NoNikud' : 'he';
|
|
1169
|
+
const m = Locale.gettext(this.getMonthName(), locale);
|
|
1154
1170
|
const y = this.getFullYear();
|
|
1155
1171
|
return gematriya(d) + ' ' + m + ' ' + gematriya(y);
|
|
1156
1172
|
}
|
|
@@ -1701,6 +1717,9 @@ const flags = {
|
|
|
1701
1717
|
/** Nach Yomi */
|
|
1702
1718
|
NACH_YOMI: 0x2000000
|
|
1703
1719
|
};
|
|
1720
|
+
const flagToCategory = [[flags.MAJOR_FAST, 'holiday', 'major', 'fast'], [flags.CHANUKAH_CANDLES, 'holiday', 'major'], [flags.HEBREW_DATE, 'hebdate'], [flags.MINOR_FAST, 'holiday', 'fast'], [flags.MINOR_HOLIDAY, 'holiday', 'minor'], [flags.MODERN_HOLIDAY, 'holiday', 'modern'], [flags.MOLAD, 'molad'], [flags.OMER_COUNT, 'omer'], [flags.PARSHA_HASHAVUA, 'parashat'],
|
|
1721
|
+
// backwards-compat
|
|
1722
|
+
[flags.ROSH_CHODESH, 'roshchodesh'], [flags.SHABBAT_MEVARCHIM, 'mevarchim'], [flags.SPECIAL_SHABBAT, 'holiday', 'shabbat'], [flags.USER_EVENT, 'user']];
|
|
1704
1723
|
|
|
1705
1724
|
/** Represents an Event with a title, date, and flags */
|
|
1706
1725
|
class Event {
|
|
@@ -1848,8 +1867,21 @@ class Event {
|
|
|
1848
1867
|
}
|
|
1849
1868
|
return ev;
|
|
1850
1869
|
}
|
|
1870
|
+
/**
|
|
1871
|
+
* Returns a list of event categories
|
|
1872
|
+
* @return {string[]}
|
|
1873
|
+
*/
|
|
1874
|
+
getCategories() {
|
|
1875
|
+
const mask = this.getFlags();
|
|
1876
|
+
for (let i = 0; i < flagToCategory.length; i++) {
|
|
1877
|
+
const attrs = flagToCategory[i];
|
|
1878
|
+
if (mask & attrs[0]) {
|
|
1879
|
+
return attrs.slice(1);
|
|
1880
|
+
}
|
|
1881
|
+
}
|
|
1882
|
+
return ['unknown'];
|
|
1883
|
+
}
|
|
1851
1884
|
}
|
|
1852
|
-
const KEYCAP_DIGITS = ['0️⃣', '1️⃣', '2️⃣', '3️⃣', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣'];
|
|
1853
1885
|
|
|
1854
1886
|
/** Daily Hebrew date ("11th of Sivan, 5780") */
|
|
1855
1887
|
class HebrewDateEvent extends Event {
|
|
@@ -3099,6 +3131,22 @@ class TimedEvent extends Event {
|
|
|
3099
3131
|
renderBrief(locale) {
|
|
3100
3132
|
return Locale.gettext(this.getDesc(), locale);
|
|
3101
3133
|
}
|
|
3134
|
+
/** @return {string[]} */
|
|
3135
|
+
getCategories() {
|
|
3136
|
+
const desc = this.getDesc();
|
|
3137
|
+
switch (desc) {
|
|
3138
|
+
// LIGHT_CANDLES or LIGHT_CANDLES_TZEIS
|
|
3139
|
+
case 'Candle lighting':
|
|
3140
|
+
return ['candles'];
|
|
3141
|
+
// YOM_TOV_ENDS
|
|
3142
|
+
case 'Havdalah':
|
|
3143
|
+
return ['havdalah'];
|
|
3144
|
+
// flags.MINOR_FAST or flags.MAJOR_FAST
|
|
3145
|
+
case 'Fast begins':
|
|
3146
|
+
case 'Fast ends':
|
|
3147
|
+
return ['zmanim', 'fast'];
|
|
3148
|
+
}
|
|
3149
|
+
}
|
|
3102
3150
|
}
|
|
3103
3151
|
|
|
3104
3152
|
/** Havdalah after Shabbat or holiday */
|
|
@@ -3523,173 +3571,6 @@ function getTodayIsHe(omer) {
|
|
|
3523
3571
|
return str.normalize();
|
|
3524
3572
|
}
|
|
3525
3573
|
|
|
3526
|
-
/* eslint-disable no-multi-spaces */
|
|
3527
|
-
const osdate = new Date(1923, 8, 11);
|
|
3528
|
-
const osday = greg2abs(osdate);
|
|
3529
|
-
const nsday = greg2abs(new Date(1975, 5, 24));
|
|
3530
|
-
const shas0 = [['Berachot', 64], ['Shabbat', 157], ['Eruvin', 105], ['Pesachim', 121], ['Shekalim', 22], ['Yoma', 88], ['Sukkah', 56], ['Beitzah', 40], ['Rosh Hashana', 35], ['Taanit', 31], ['Megillah', 32], ['Moed Katan', 29], ['Chagigah', 27], ['Yevamot', 122], ['Ketubot', 112], ['Nedarim', 91], ['Nazir', 66], ['Sotah', 49], ['Gitin', 90], ['Kiddushin', 82], ['Baba Kamma', 119], ['Baba Metzia', 119], ['Baba Batra', 176], ['Sanhedrin', 113], ['Makkot', 24], ['Shevuot', 49], ['Avodah Zarah', 76], ['Horayot', 14], ['Zevachim', 120], ['Menachot', 110], ['Chullin', 142], ['Bechorot', 61], ['Arachin', 34], ['Temurah', 34], ['Keritot', 28], ['Meilah', 22], ['Kinnim', 4], ['Tamid', 9], ['Midot', 5], ['Niddah', 73]].map(m => {
|
|
3531
|
-
return {
|
|
3532
|
-
name: m[0],
|
|
3533
|
-
blatt: m[1]
|
|
3534
|
-
};
|
|
3535
|
-
});
|
|
3536
|
-
|
|
3537
|
-
/**
|
|
3538
|
-
* Returns the Daf Yomi for given date
|
|
3539
|
-
*/
|
|
3540
|
-
class DafYomi {
|
|
3541
|
-
/**
|
|
3542
|
-
* Initializes a daf yomi instance
|
|
3543
|
-
* @param {Date|HDate|number} gregdate Gregorian date
|
|
3544
|
-
*/
|
|
3545
|
-
constructor(gregdate) {
|
|
3546
|
-
const cday = typeof gregdate === 'number' && !isNaN(gregdate) ? gregdate : isDate(gregdate) ? greg2abs(gregdate) : HDate.isHDate(gregdate) ? gregdate.abs() : throwTypeError(`non-date given to dafyomi: ${gregdate}`);
|
|
3547
|
-
if (cday < osday) {
|
|
3548
|
-
throw new RangeError(`Date ${gregdate} too early; Daf Yomi cycle began on ${osdate}`);
|
|
3549
|
-
}
|
|
3550
|
-
let cno;
|
|
3551
|
-
let dno;
|
|
3552
|
-
if (cday >= nsday) {
|
|
3553
|
-
// "new" cycle
|
|
3554
|
-
cno = 8 + Math.floor((cday - nsday) / 2711);
|
|
3555
|
-
dno = (cday - nsday) % 2711;
|
|
3556
|
-
} else {
|
|
3557
|
-
// old cycle
|
|
3558
|
-
cno = 1 + Math.floor((cday - osday) / 2702);
|
|
3559
|
-
dno = (cday - osday) % 2702;
|
|
3560
|
-
}
|
|
3561
|
-
|
|
3562
|
-
// Find the daf taking note that the cycle changed slightly after cycle 7.
|
|
3563
|
-
|
|
3564
|
-
let total = 0;
|
|
3565
|
-
let blatt = 0;
|
|
3566
|
-
let count = -1;
|
|
3567
|
-
|
|
3568
|
-
// Fix Shekalim for old cycles
|
|
3569
|
-
const shortShekalim = cno <= 7;
|
|
3570
|
-
const shas = shortShekalim ? shas0.slice() : shas0;
|
|
3571
|
-
if (shortShekalim) {
|
|
3572
|
-
shas[4] = {
|
|
3573
|
-
name: 'Shekalim',
|
|
3574
|
-
blatt: 13
|
|
3575
|
-
};
|
|
3576
|
-
}
|
|
3577
|
-
|
|
3578
|
-
// Find the daf
|
|
3579
|
-
let j = 0;
|
|
3580
|
-
const dafcnt = 40;
|
|
3581
|
-
while (j < dafcnt) {
|
|
3582
|
-
count++;
|
|
3583
|
-
total = total + shas[j].blatt - 1;
|
|
3584
|
-
if (dno < total) {
|
|
3585
|
-
blatt = shas[j].blatt + 1 - (total - dno);
|
|
3586
|
-
// fiddle with the weird ones near the end
|
|
3587
|
-
switch (count) {
|
|
3588
|
-
case 36:
|
|
3589
|
-
blatt = blatt + 21;
|
|
3590
|
-
break;
|
|
3591
|
-
case 37:
|
|
3592
|
-
blatt = blatt + 24;
|
|
3593
|
-
break;
|
|
3594
|
-
case 38:
|
|
3595
|
-
blatt = blatt + 32;
|
|
3596
|
-
break;
|
|
3597
|
-
}
|
|
3598
|
-
// Bailout
|
|
3599
|
-
j = 1 + dafcnt;
|
|
3600
|
-
}
|
|
3601
|
-
j++;
|
|
3602
|
-
}
|
|
3603
|
-
this.name = shas[count].name;
|
|
3604
|
-
this.blatt = blatt;
|
|
3605
|
-
}
|
|
3606
|
-
/**
|
|
3607
|
-
* @return {number}
|
|
3608
|
-
*/
|
|
3609
|
-
getBlatt() {
|
|
3610
|
-
return this.blatt;
|
|
3611
|
-
}
|
|
3612
|
-
/**
|
|
3613
|
-
* @return {string}
|
|
3614
|
-
*/
|
|
3615
|
-
getName() {
|
|
3616
|
-
return this.name;
|
|
3617
|
-
}
|
|
3618
|
-
/**
|
|
3619
|
-
* Formats (with translation) the dafyomi result as a string like "Pesachim 34"
|
|
3620
|
-
* @param {string} [locale] Optional locale name (defaults to active locale).
|
|
3621
|
-
* @return {string}
|
|
3622
|
-
*/
|
|
3623
|
-
render(locale) {
|
|
3624
|
-
locale = locale || Locale.getLocaleName();
|
|
3625
|
-
if (typeof locale === 'string') {
|
|
3626
|
-
locale = locale.toLowerCase();
|
|
3627
|
-
}
|
|
3628
|
-
if (locale === 'he' || locale === 'he-x-nonikud') {
|
|
3629
|
-
return Locale.gettext(this.name, locale) + ' דף ' + gematriya(this.blatt);
|
|
3630
|
-
}
|
|
3631
|
-
return Locale.gettext(this.name, locale) + ' ' + this.blatt;
|
|
3632
|
-
}
|
|
3633
|
-
}
|
|
3634
|
-
const dafYomiSefaria = {
|
|
3635
|
-
'Berachot': 'Berakhot',
|
|
3636
|
-
'Rosh Hashana': 'Rosh Hashanah',
|
|
3637
|
-
'Gitin': 'Gittin',
|
|
3638
|
-
'Baba Kamma': 'Bava Kamma',
|
|
3639
|
-
'Baba Metzia': 'Bava Metzia',
|
|
3640
|
-
'Baba Batra': 'Bava Batra',
|
|
3641
|
-
'Bechorot': 'Bekhorot',
|
|
3642
|
-
'Arachin': 'Arakhin',
|
|
3643
|
-
'Midot': 'Middot',
|
|
3644
|
-
'Shekalim': 'Jerusalem_Talmud_Shekalim'
|
|
3645
|
-
};
|
|
3646
|
-
|
|
3647
|
-
/**
|
|
3648
|
-
* Event wrapper around a DafYomi instance
|
|
3649
|
-
*/
|
|
3650
|
-
class DafYomiEvent extends Event {
|
|
3651
|
-
/**
|
|
3652
|
-
* @param {HDate} date
|
|
3653
|
-
*/
|
|
3654
|
-
constructor(date) {
|
|
3655
|
-
const daf = new DafYomi(date.greg());
|
|
3656
|
-
super(date, daf.render('en'), flags.DAF_YOMI);
|
|
3657
|
-
this.daf = daf;
|
|
3658
|
-
}
|
|
3659
|
-
/**
|
|
3660
|
-
* Returns Daf Yomi name including the 'Daf Yomi: ' prefix (e.g. "Daf Yomi: Pesachim 107").
|
|
3661
|
-
* @param {string} [locale] Optional locale name (defaults to active locale).
|
|
3662
|
-
* @return {string}
|
|
3663
|
-
*/
|
|
3664
|
-
render(locale) {
|
|
3665
|
-
return Locale.gettext('Daf Yomi', locale) + ': ' + this.daf.render(locale);
|
|
3666
|
-
}
|
|
3667
|
-
/**
|
|
3668
|
-
* Returns Daf Yomi name without the 'Daf Yomi: ' prefix (e.g. "Pesachim 107").
|
|
3669
|
-
* @param {string} [locale] Optional locale name (defaults to active locale).
|
|
3670
|
-
* @return {string}
|
|
3671
|
-
*/
|
|
3672
|
-
renderBrief(locale) {
|
|
3673
|
-
return this.daf.render(locale);
|
|
3674
|
-
}
|
|
3675
|
-
/**
|
|
3676
|
-
* Returns a link to sefaria.org or dafyomi.org
|
|
3677
|
-
* @return {string}
|
|
3678
|
-
*/
|
|
3679
|
-
url() {
|
|
3680
|
-
const daf = this.daf;
|
|
3681
|
-
const tractate = daf.getName();
|
|
3682
|
-
const blatt = daf.getBlatt();
|
|
3683
|
-
if (tractate == 'Kinnim' || tractate == 'Midot') {
|
|
3684
|
-
return `https://www.dafyomi.org/index.php?masechta=meilah&daf=${blatt}a`;
|
|
3685
|
-
} else {
|
|
3686
|
-
const name0 = dafYomiSefaria[tractate] || tractate;
|
|
3687
|
-
const name = name0.replace(/ /g, '_');
|
|
3688
|
-
return `https://www.sefaria.org/${name}.${blatt}a?lang=bi`;
|
|
3689
|
-
}
|
|
3690
|
-
}
|
|
3691
|
-
}
|
|
3692
|
-
|
|
3693
3574
|
/* eslint-disable new-cap */
|
|
3694
3575
|
const INCOMPLETE = 0;
|
|
3695
3576
|
const REGULAR = 1;
|
|
@@ -4119,10 +4000,10 @@ class ParshaEvent extends Event {
|
|
|
4119
4000
|
}
|
|
4120
4001
|
}
|
|
4121
4002
|
|
|
4122
|
-
const SUN$
|
|
4003
|
+
const SUN$1 = 0;
|
|
4123
4004
|
const TUE$1 = 2;
|
|
4124
4005
|
const FRI$2 = 5;
|
|
4125
|
-
const SAT$
|
|
4006
|
+
const SAT$2 = 6;
|
|
4126
4007
|
const NISAN$3 = months.NISAN;
|
|
4127
4008
|
const IYYAR = months.IYYAR;
|
|
4128
4009
|
|
|
@@ -4144,7 +4025,7 @@ function dateYomHaShoah(year) {
|
|
|
4144
4025
|
let nisan27dt = new HDate(27, NISAN$3, year);
|
|
4145
4026
|
if (nisan27dt.getDay() === FRI$2) {
|
|
4146
4027
|
nisan27dt = new HDate(26, NISAN$3, year);
|
|
4147
|
-
} else if (nisan27dt.getDay() === SUN$
|
|
4028
|
+
} else if (nisan27dt.getDay() === SUN$1) {
|
|
4148
4029
|
nisan27dt = new HDate(28, NISAN$3, year);
|
|
4149
4030
|
}
|
|
4150
4031
|
return nisan27dt;
|
|
@@ -4163,9 +4044,9 @@ function dateYomHaZikaron(year) {
|
|
|
4163
4044
|
let day;
|
|
4164
4045
|
const pesach = new HDate(15, NISAN$3, year);
|
|
4165
4046
|
const pdow = pesach.getDay();
|
|
4166
|
-
if (pdow === SUN$
|
|
4047
|
+
if (pdow === SUN$1) {
|
|
4167
4048
|
day = 2;
|
|
4168
|
-
} else if (pdow === SAT$
|
|
4049
|
+
} else if (pdow === SAT$2) {
|
|
4169
4050
|
day = 3;
|
|
4170
4051
|
} else if (year < 5764) {
|
|
4171
4052
|
day = 4;
|
|
@@ -4651,6 +4532,29 @@ class HolidayEvent extends Event {
|
|
|
4651
4532
|
return '✡️';
|
|
4652
4533
|
}
|
|
4653
4534
|
}
|
|
4535
|
+
/** @return {string[]} */
|
|
4536
|
+
getCategories() {
|
|
4537
|
+
const cats = super.getCategories();
|
|
4538
|
+
if (cats[0] !== 'unknown') {
|
|
4539
|
+
return cats;
|
|
4540
|
+
}
|
|
4541
|
+
const desc = this.getDesc();
|
|
4542
|
+
// Don't depend on flags.MINOR_HOLIDAY always being set
|
|
4543
|
+
switch (desc) {
|
|
4544
|
+
case 'Lag BaOmer':
|
|
4545
|
+
case 'Leil Selichot':
|
|
4546
|
+
case 'Pesach Sheni':
|
|
4547
|
+
case 'Erev Purim':
|
|
4548
|
+
case 'Purim Katan':
|
|
4549
|
+
case 'Shushan Purim':
|
|
4550
|
+
case 'Tu B\'Av':
|
|
4551
|
+
case 'Tu BiShvat':
|
|
4552
|
+
case 'Rosh Hashana LaBehemot':
|
|
4553
|
+
return ['holiday', 'minor'];
|
|
4554
|
+
default:
|
|
4555
|
+
return ['holiday', 'major'];
|
|
4556
|
+
}
|
|
4557
|
+
}
|
|
4654
4558
|
}
|
|
4655
4559
|
const roshChodeshStr = 'Rosh Chodesh';
|
|
4656
4560
|
|
|
@@ -4798,13 +4702,13 @@ class YomKippurKatanEvent extends HolidayEvent {
|
|
|
4798
4702
|
return undefined;
|
|
4799
4703
|
}
|
|
4800
4704
|
}
|
|
4801
|
-
const SUN
|
|
4705
|
+
const SUN = 0;
|
|
4802
4706
|
// const MON = 1;
|
|
4803
4707
|
const TUE = 2;
|
|
4804
4708
|
// const WED = 3;
|
|
4805
4709
|
const THU = 4;
|
|
4806
4710
|
const FRI$1 = 5;
|
|
4807
|
-
const SAT$
|
|
4711
|
+
const SAT$1 = 6;
|
|
4808
4712
|
const NISAN$2 = months.NISAN;
|
|
4809
4713
|
// const IYYAR = months.IYYAR;
|
|
4810
4714
|
// const SIVAN = months.SIVAN;
|
|
@@ -4889,6 +4793,7 @@ const emojiIsraelFlag = {
|
|
|
4889
4793
|
};
|
|
4890
4794
|
const chanukahEmoji = '🕎';
|
|
4891
4795
|
const yearCache = Object.create(null);
|
|
4796
|
+
const KEYCAP_DIGITS = ['0️⃣', '1️⃣', '2️⃣', '3️⃣', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣'];
|
|
4892
4797
|
|
|
4893
4798
|
/**
|
|
4894
4799
|
* Lower-level holidays interface, which returns a `Map` of `Event`s indexed by
|
|
@@ -4942,7 +4847,7 @@ function getHolidaysForYear_(year) {
|
|
|
4942
4847
|
// Variable date holidays
|
|
4943
4848
|
add(new HolidayEvent(new HDate(3 + (RH.getDay() == THU), TISHREI$1, year), 'Tzom Gedaliah', MINOR_FAST$1));
|
|
4944
4849
|
// first SAT after RH
|
|
4945
|
-
add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$
|
|
4850
|
+
add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$1, 7 + RH.abs())), 'Shabbat Shuva', SPECIAL_SHABBAT$1));
|
|
4946
4851
|
const rchTevet = HDate.shortKislev(year) ? new HDate(1, TEVET$1, year) : new HDate(30, KISLEV$1, year);
|
|
4947
4852
|
add(new HolidayEvent(rchTevet, 'Chag HaBanot', MINOR_HOLIDAY$1));
|
|
4948
4853
|
// yes, we know Kislev 30-32 are wrong
|
|
@@ -4960,14 +4865,14 @@ function getHolidaysForYear_(year) {
|
|
|
4960
4865
|
}));
|
|
4961
4866
|
add(new AsaraBTevetEvent(new HDate(10, TEVET$1, year), 'Asara B\'Tevet', MINOR_FAST$1));
|
|
4962
4867
|
const pesachAbs = pesach.abs();
|
|
4963
|
-
add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$
|
|
4964
|
-
add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$
|
|
4868
|
+
add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$1, pesachAbs - 43)), 'Shabbat Shekalim', SPECIAL_SHABBAT$1), new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$1, pesachAbs - 30)), 'Shabbat Zachor', SPECIAL_SHABBAT$1), new HolidayEvent(new HDate(pesachAbs - (pesach.getDay() == TUE ? 33 : 31)), 'Ta\'anit Esther', MINOR_FAST$1));
|
|
4869
|
+
add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$1, pesachAbs - 14) - 7), 'Shabbat Parah', SPECIAL_SHABBAT$1), new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$1, pesachAbs - 14)), 'Shabbat HaChodesh', SPECIAL_SHABBAT$1), new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$1, pesachAbs - 1)), 'Shabbat HaGadol', SPECIAL_SHABBAT$1), new HolidayEvent(
|
|
4965
4870
|
// if the fast falls on Shabbat, move to Thursday
|
|
4966
|
-
pesach.prev().getDay() == SAT$
|
|
4967
|
-
add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$
|
|
4871
|
+
pesach.prev().getDay() == SAT$1 ? pesach.onOrBefore(THU) : new HDate(14, NISAN$2, year), 'Ta\'anit Bechorot', MINOR_FAST$1));
|
|
4872
|
+
add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$1, new HDate(1, TISHREI$1, year + 1).abs() - 4)), 'Leil Selichot', MINOR_HOLIDAY$1, {
|
|
4968
4873
|
emoji: '🕍'
|
|
4969
4874
|
}));
|
|
4970
|
-
if (pesach.getDay() == SUN
|
|
4875
|
+
if (pesach.getDay() == SUN) {
|
|
4971
4876
|
add(new HolidayEvent(new HDate(16, months.ADAR_II, year), 'Purim Meshulash', MINOR_HOLIDAY$1));
|
|
4972
4877
|
}
|
|
4973
4878
|
if (HDate.isLeapYear(year)) {
|
|
@@ -4990,11 +4895,11 @@ function getHolidaysForYear_(year) {
|
|
|
4990
4895
|
if (year >= h.firstYear) {
|
|
4991
4896
|
let hd = new HDate(h.dd, h.mm, year);
|
|
4992
4897
|
const dow = hd.getDay();
|
|
4993
|
-
if (h.friSatMovetoThu && (dow === FRI$1 || dow === SAT$
|
|
4898
|
+
if (h.friSatMovetoThu && (dow === FRI$1 || dow === SAT$1)) {
|
|
4994
4899
|
hd = hd.onOrBefore(THU);
|
|
4995
4900
|
} else if (h.friPostponeToSun && dow === FRI$1) {
|
|
4996
4901
|
hd = new HDate(hd.abs() + 2);
|
|
4997
|
-
} else if (h.satPostponeToSun && dow === SAT$
|
|
4902
|
+
} else if (h.satPostponeToSun && dow === SAT$1) {
|
|
4998
4903
|
hd = hd.next();
|
|
4999
4904
|
}
|
|
5000
4905
|
const mask = h.chul ? MODERN_HOLIDAY$1 : MODERN_HOLIDAY$1 | flags.IL_ONLY;
|
|
@@ -5007,7 +4912,7 @@ function getHolidaysForYear_(year) {
|
|
|
5007
4912
|
});
|
|
5008
4913
|
let tamuz17 = new HDate(17, TAMUZ, year);
|
|
5009
4914
|
let tamuz17attrs;
|
|
5010
|
-
if (tamuz17.getDay() == SAT$
|
|
4915
|
+
if (tamuz17.getDay() == SAT$1) {
|
|
5011
4916
|
tamuz17 = new HDate(18, TAMUZ, year);
|
|
5012
4917
|
tamuz17attrs = {
|
|
5013
4918
|
observed: true
|
|
@@ -5017,7 +4922,7 @@ function getHolidaysForYear_(year) {
|
|
|
5017
4922
|
let av9dt = new HDate(9, AV, year);
|
|
5018
4923
|
let av9title = 'Tish\'a B\'Av';
|
|
5019
4924
|
let av9attrs;
|
|
5020
|
-
if (av9dt.getDay() == SAT$
|
|
4925
|
+
if (av9dt.getDay() == SAT$1) {
|
|
5021
4926
|
av9dt = av9dt.next();
|
|
5022
4927
|
av9attrs = {
|
|
5023
4928
|
observed: true
|
|
@@ -5025,7 +4930,7 @@ function getHolidaysForYear_(year) {
|
|
|
5025
4930
|
av9title += ' (observed)';
|
|
5026
4931
|
}
|
|
5027
4932
|
const av9abs = av9dt.abs();
|
|
5028
|
-
add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$
|
|
4933
|
+
add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$1, av9abs)), 'Shabbat Chazon', SPECIAL_SHABBAT$1), new HolidayEvent(av9dt.prev(), 'Erev Tish\'a B\'Av', EREV$1 | MAJOR_FAST$1, av9attrs), new HolidayEvent(av9dt, av9title, MAJOR_FAST$1, av9attrs), new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$1, av9abs + 7)), 'Shabbat Nachamu', SPECIAL_SHABBAT$1));
|
|
5029
4934
|
const monthsInYear = HDate.monthsInYear(year);
|
|
5030
4935
|
for (let month = 1; month <= monthsInYear; month++) {
|
|
5031
4936
|
const monthName = HDate.getMonthName(month, year);
|
|
@@ -5041,7 +4946,7 @@ function getHolidaysForYear_(year) {
|
|
|
5041
4946
|
|
|
5042
4947
|
// Don't worry about month overrun; will get "Nisan" for month=14
|
|
5043
4948
|
const nextMonthName = HDate.getMonthName(month + 1, year);
|
|
5044
|
-
add(new MevarchimChodeshEvent(new HDate(29, month, year).onOrBefore(SAT$
|
|
4949
|
+
add(new MevarchimChodeshEvent(new HDate(29, month, year).onOrBefore(SAT$1), nextMonthName));
|
|
5045
4950
|
}
|
|
5046
4951
|
|
|
5047
4952
|
// Begin: Yom Kippur Katan
|
|
@@ -5056,7 +4961,7 @@ function getHolidaysForYear_(year) {
|
|
|
5056
4961
|
}
|
|
5057
4962
|
let ykk = new HDate(29, month, year);
|
|
5058
4963
|
const dow = ykk.getDay();
|
|
5059
|
-
if (dow === FRI$1 || dow === SAT$
|
|
4964
|
+
if (dow === FRI$1 || dow === SAT$1) {
|
|
5060
4965
|
ykk = ykk.onOrBefore(THU);
|
|
5061
4966
|
}
|
|
5062
4967
|
const nextMonthName = HDate.getMonthName(nextMonth, year);
|
|
@@ -5106,422 +5011,41 @@ function getBirkatHaChama(year) {
|
|
|
5106
5011
|
return 0;
|
|
5107
5012
|
}
|
|
5108
5013
|
|
|
5109
|
-
|
|
5110
|
-
|
|
5111
|
-
const cycleStartDate$1 = new Date(1947, 4, 20);
|
|
5112
|
-
const mishnaYomiStart = greg2abs(cycleStartDate$1);
|
|
5113
|
-
const numMishnayot = 4192;
|
|
5114
|
-
const numDays = numMishnayot / 2;
|
|
5115
|
-
|
|
5116
|
-
/**
|
|
5117
|
-
* Describes a mishna to be read
|
|
5118
|
-
* @typedef {Object} MishnaYomi
|
|
5119
|
-
* @property {string} k tractate name in Sephardic transliteration (e.g. "Berakhot", "Moed Katan")
|
|
5120
|
-
* @property {string} v verse (e.g. "2:1")
|
|
5121
|
-
*/
|
|
5122
|
-
|
|
5123
|
-
/**
|
|
5124
|
-
* A program of daily learning in which participants study two Mishnahs
|
|
5125
|
-
* each day in order to finish the entire Mishnah in ~6 years.
|
|
5126
|
-
*/
|
|
5127
|
-
class MishnaYomiIndex {
|
|
5128
|
-
/**
|
|
5129
|
-
* Initializes a Mishna Yomi instance
|
|
5130
|
-
*/
|
|
5131
|
-
constructor() {
|
|
5132
|
-
const tmp = Array(numMishnayot);
|
|
5133
|
-
let i = 0;
|
|
5134
|
-
for (let j = 0; j < mishnayot.length; j++) {
|
|
5135
|
-
const tractate = mishnayot[j];
|
|
5136
|
-
const v = tractate.v;
|
|
5137
|
-
for (let chap = 1; chap <= v.length; chap++) {
|
|
5138
|
-
const numv = v[chap - 1];
|
|
5139
|
-
for (let verse = 1; verse <= numv; verse++) {
|
|
5140
|
-
tmp[i++] = {
|
|
5141
|
-
k: tractate.k,
|
|
5142
|
-
v: `${chap}:${verse}`
|
|
5143
|
-
};
|
|
5144
|
-
}
|
|
5145
|
-
}
|
|
5146
|
-
}
|
|
5147
|
-
const days = Array(numDays);
|
|
5148
|
-
for (let j = 0; j < numDays; j++) {
|
|
5149
|
-
const k = j * 2;
|
|
5150
|
-
days[j] = [tmp[k], tmp[k + 1]];
|
|
5151
|
-
}
|
|
5152
|
-
/** @type {MishnaYomi[]} */
|
|
5153
|
-
this.days = days;
|
|
5154
|
-
}
|
|
5155
|
-
|
|
5156
|
-
/**
|
|
5157
|
-
* Looks up a Mishna Yomi
|
|
5158
|
-
* @param {Date|HDate|number} date Gregorian date
|
|
5159
|
-
* @return {MishnaYomi[]}
|
|
5160
|
-
*/
|
|
5161
|
-
lookup(date) {
|
|
5162
|
-
const abs = typeof date === 'number' && !isNaN(date) ? date : isDate(date) ? greg2abs(date) : HDate.isHDate(date) ? date.abs() : throwTypeError(`Invalid date: ${date}`);
|
|
5163
|
-
if (abs < mishnaYomiStart) {
|
|
5164
|
-
const dt = abs2greg(abs);
|
|
5165
|
-
const s = dt.toISOString().substring(0, 10);
|
|
5166
|
-
throw new RangeError(`Date ${s} too early; Mishna Yomi cycle began on 1947-05-20`);
|
|
5167
|
-
}
|
|
5168
|
-
const dayNum = (abs - mishnaYomiStart) % numDays;
|
|
5169
|
-
return this.days[dayNum];
|
|
5170
|
-
}
|
|
5171
|
-
}
|
|
5172
|
-
|
|
5173
|
-
/**
|
|
5174
|
-
* @private
|
|
5175
|
-
* @param {MishnaYomi[]} mishnaYomi
|
|
5176
|
-
* @param {string} locale
|
|
5177
|
-
* @return {string}
|
|
5178
|
-
*/
|
|
5179
|
-
function formatMyomi(mishnaYomi, locale) {
|
|
5180
|
-
const k1 = mishnaYomi[0].k;
|
|
5181
|
-
const cv1 = mishnaYomi[0].v;
|
|
5182
|
-
const mishna1 = Locale.gettext(k1, locale) + ' ' + cv1;
|
|
5183
|
-
const k2 = mishnaYomi[1].k;
|
|
5184
|
-
const cv2 = mishnaYomi[1].v;
|
|
5185
|
-
if (k1 !== k2) {
|
|
5186
|
-
return mishna1 + '-' + Locale.gettext(k2, locale) + ' ' + cv2;
|
|
5187
|
-
}
|
|
5188
|
-
const p1 = cv1.split(':');
|
|
5189
|
-
const p2 = cv2.split(':');
|
|
5190
|
-
if (p1[0] === p2[0]) {
|
|
5191
|
-
return mishna1 + '-' + p2[1];
|
|
5192
|
-
}
|
|
5193
|
-
return mishna1 + '-' + cv2;
|
|
5194
|
-
}
|
|
5195
|
-
|
|
5196
|
-
/**
|
|
5197
|
-
* Event wrapper around a Mishna Yomi instance
|
|
5198
|
-
*/
|
|
5199
|
-
class MishnaYomiEvent extends Event {
|
|
5200
|
-
/**
|
|
5201
|
-
* @param {HDate} date
|
|
5202
|
-
* @param {MishnaYomi[]} mishnaYomi
|
|
5203
|
-
*/
|
|
5204
|
-
constructor(date, mishnaYomi) {
|
|
5205
|
-
super(date, formatMyomi(mishnaYomi, null), flags.MISHNA_YOMI);
|
|
5206
|
-
this.mishnaYomi = mishnaYomi;
|
|
5207
|
-
}
|
|
5208
|
-
/**
|
|
5209
|
-
* Returns Mishna Yomi name (e.g. "Bava Metzia 10:5-6" or "Berakhot 9:5-Peah 1:1").
|
|
5210
|
-
* @param {string} [locale] Optional locale name (defaults to active locale).
|
|
5211
|
-
* @return {string}
|
|
5212
|
-
*/
|
|
5213
|
-
render(locale) {
|
|
5214
|
-
return formatMyomi(this.mishnaYomi, locale);
|
|
5215
|
-
}
|
|
5216
|
-
/**
|
|
5217
|
-
* Returns a link to sefaria.org
|
|
5218
|
-
* @return {string}
|
|
5219
|
-
*/
|
|
5220
|
-
url() {
|
|
5221
|
-
const mishnaYomi = this.mishnaYomi;
|
|
5222
|
-
const k1 = mishnaYomi[0].k;
|
|
5223
|
-
const mishna = k1 === 'Avot' ? 'Pirkei' : 'Mishnah';
|
|
5224
|
-
const name = k1.replace(/ /g, '_');
|
|
5225
|
-
const prefix = `https://www.sefaria.org/${mishna}_${name}`;
|
|
5226
|
-
const cv1 = mishnaYomi[0].v;
|
|
5227
|
-
if (k1 !== mishnaYomi[1].k) {
|
|
5228
|
-
const verse1 = cv1.replace(':', '.');
|
|
5229
|
-
return `${prefix}.${verse1}?lang=bi`;
|
|
5230
|
-
}
|
|
5231
|
-
const cv2 = mishnaYomi[1].v;
|
|
5232
|
-
const p1 = cv1.split(':');
|
|
5233
|
-
const p2 = cv2.split(':');
|
|
5234
|
-
const verse1 = p1.join('.');
|
|
5235
|
-
const verse2 = p1[0] === p2[0] ? p2[1] : p2.join('.');
|
|
5236
|
-
return `${prefix}.${verse1}-${verse2}?lang=bi`;
|
|
5237
|
-
}
|
|
5238
|
-
}
|
|
5239
|
-
|
|
5240
|
-
const nach = [['Joshua', 24], ['Judges', 21], ['I Samuel', 31], ['II Samuel', 24], ['I Kings', 22], ['II Kings', 25], ['Isaiah', 66], ['Jeremiah', 52], ['Ezekiel', 48], ['Hosea', 14], ['Joel', 4], ['Amos', 9], ['Obadiah', 1], ['Jonah', 4], ['Micah', 7], ['Nachum', 3], ['Habakkuk', 3], ['Zephaniah', 3], ['Haggai', 2], ['Zechariah', 14], ['Malachi', 3], ['Psalms', 150], ['Proverbs', 31], ['Job', 42], ['Song of Songs', 8], ['Ruth', 4], ['Lamentations', 5], ['Ecclesiastes', 12], ['Esther', 10], ['Daniel', 12], ['Ezra', 10], ['Nehemiah', 13], ['I Chronicles', 29], ['II Chronicles', 36]];
|
|
5241
|
-
const cycleStartDate = new Date(2007, 10, 1);
|
|
5242
|
-
const nachYomiStart = greg2abs(cycleStartDate);
|
|
5243
|
-
const numChapters = 742;
|
|
5244
|
-
|
|
5245
|
-
/**
|
|
5246
|
-
* Describes a chapter to be read
|
|
5247
|
-
* @typedef {Object} NachYomi
|
|
5248
|
-
* @property {string} k book name in Sephardic transliteration (e.g. "Berakhot", "Moed Katan")
|
|
5249
|
-
* @property {number} v chapter (e.g. "2:1")
|
|
5250
|
-
*/
|
|
5014
|
+
/** @private */
|
|
5015
|
+
const cals = Object.create(null);
|
|
5251
5016
|
|
|
5252
5017
|
/**
|
|
5253
|
-
*
|
|
5254
|
-
*
|
|
5018
|
+
* Plug-ins for daily learning calendars such as Daf Yomi, Mishna Yomi, Nach Yomi, etc.
|
|
5019
|
+
*
|
|
5020
|
+
* Learning schedules are provided by the `@hebcal/learning` package.
|
|
5255
5021
|
*/
|
|
5256
|
-
class
|
|
5257
|
-
/**
|
|
5258
|
-
* Initializes a Nach Yomi instance
|
|
5259
|
-
*/
|
|
5260
|
-
constructor() {
|
|
5261
|
-
const days = Array(numChapters);
|
|
5262
|
-
let i = 0;
|
|
5263
|
-
for (let j = 0; j < nach.length; j++) {
|
|
5264
|
-
const book = nach[j][0];
|
|
5265
|
-
const chapters = nach[j][1];
|
|
5266
|
-
for (let chap = 1; chap <= chapters; chap++) {
|
|
5267
|
-
days[i++] = {
|
|
5268
|
-
k: book,
|
|
5269
|
-
v: chap
|
|
5270
|
-
};
|
|
5271
|
-
}
|
|
5272
|
-
}
|
|
5273
|
-
this.days = days;
|
|
5274
|
-
}
|
|
5275
|
-
|
|
5022
|
+
class DailyLearning {
|
|
5276
5023
|
/**
|
|
5277
|
-
*
|
|
5278
|
-
* @param {
|
|
5279
|
-
* @
|
|
5024
|
+
* Register a new learning calendar.
|
|
5025
|
+
* @param {string} name
|
|
5026
|
+
* @param {Function} calendar
|
|
5280
5027
|
*/
|
|
5281
|
-
|
|
5282
|
-
|
|
5283
|
-
|
|
5284
|
-
const dt = abs2greg(abs);
|
|
5285
|
-
const s = dt.toISOString().substring(0, 10);
|
|
5286
|
-
throw new RangeError(`Date ${s} too early; Nach Yomi cycle began on 2007-11-01`);
|
|
5028
|
+
static addCalendar(name, calendar) {
|
|
5029
|
+
if (typeof calendar !== 'function') {
|
|
5030
|
+
throw new TypeError(`Invalid calendar function: ${calendar}`);
|
|
5287
5031
|
}
|
|
5288
|
-
|
|
5289
|
-
return this.days[dayNum];
|
|
5032
|
+
cals[name] = calendar;
|
|
5290
5033
|
}
|
|
5291
|
-
}
|
|
5292
5034
|
|
|
5293
|
-
/**
|
|
5294
|
-
* Event wrapper around a Nach Yomi instance
|
|
5295
|
-
*/
|
|
5296
|
-
class NachYomiEvent extends Event {
|
|
5297
5035
|
/**
|
|
5298
|
-
*
|
|
5299
|
-
*
|
|
5300
|
-
|
|
5301
|
-
|
|
5302
|
-
|
|
5303
|
-
this.nachYomi = nachYomi;
|
|
5304
|
-
}
|
|
5305
|
-
/**
|
|
5306
|
-
* Returns name of tractate and page (e.g. "Beitzah 21").
|
|
5307
|
-
* @param {string} [locale] Optional locale name (defaults to active locale).
|
|
5308
|
-
* @return {string}
|
|
5036
|
+
* Returns an event from daily calendar for a given date. Returns `null` if there
|
|
5037
|
+
* is no learning from this calendar on this date.
|
|
5038
|
+
* @param {string} name
|
|
5039
|
+
* @param {HDate} hd
|
|
5040
|
+
* @return {Event}
|
|
5309
5041
|
*/
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
if (typeof
|
|
5313
|
-
|
|
5042
|
+
static lookup(name, hd) {
|
|
5043
|
+
const lookup = cals[name];
|
|
5044
|
+
if (typeof lookup === 'function') {
|
|
5045
|
+
return lookup(hd);
|
|
5314
5046
|
}
|
|
5315
|
-
const name = Locale.gettext(this.nachYomi.k, locale);
|
|
5316
|
-
if (locale === 'he' || locale === 'he-x-nonikud') {
|
|
5317
|
-
return name + ' ' + gematriya(this.nachYomi.v);
|
|
5318
|
-
}
|
|
5319
|
-
return name + ' ' + this.nachYomi.v;
|
|
5320
|
-
}
|
|
5321
|
-
/**
|
|
5322
|
-
* Returns a link to sefaria.org
|
|
5323
|
-
* @return {string}
|
|
5324
|
-
*/
|
|
5325
|
-
url() {
|
|
5326
|
-
const name = this.nachYomi.k.replace(/ /g, '_');
|
|
5327
|
-
const chapter = this.nachYomi.v;
|
|
5328
|
-
return `https://www.sefaria.org/${name}.${chapter}?lang=bi`;
|
|
5329
|
-
}
|
|
5330
|
-
}
|
|
5331
|
-
|
|
5332
|
-
var Berakhot=["1:1:1-2","1:1:7-11","1:1:12-15","1:1:16-19","1:1:23-27","1:1:29-31","1:1:36-2:2","1:2:8-9","1:4:3-5:3","1:5:9-14","1:5:18-6:3","2:1:1-4","2:1:14-19","2:3:4-7","2:3:10-14","2:4:1-3","2:4:8-12","2:5:1-8","2:6:3-7:2","2:8:2-7","2:9:1-4","3:1:4-7","3:1:12-18","3:1:23-2:3","3:2:5-3:8","3:3:11-4:5","3:4:15-5:6","3:5:13-6:1","4:1:1-2","4:1:10-16","4:1:21-25","4:1:28-31","4:1:33-3:2","4:3:11-4:2","4:4:9-5:5","4:6:3-7","5:1:3-11","5:1:18-2:3","5:2:6-10","5:3:2-7","6:1:1-2","6:1:4-6","6:1:8-9","6:1:11-15","6:1:17-23","6:2:1-4","6:4:2-4","6:5:3-5","6:6:3-4","6:6:6-8:2","7:1:1-3","7:1:5-6","7:1:7-2:2","7:2:7-3:1","7:3:4-4:3","7:5:5-11","8:1:6-7","8:2:2-6","8:2:12-3:3","8:4:1-5:6","8:6:4-11","9:1:1-4","9:1:13-22","9:1:33-2:6","9:2:12-20","9:3:3-7","9:5:1-7","9:5:16-22"];var Peah=["1:1:1-3","1:1:6-11","1:1:15-22","1:1:31-39","1:1:47-56","1:3:1-3","1:3:5-4:1","1:4:3-7","1:5:1-2",null,"2:1:4-9","2:1:11-3:2","2:4:3-5:1","3:1:1-7","3:1:10-2:4","3:4:3-5:4","3:7:1-3","3:7:7-13","3:7:18","4:1:1-3","4:2:1-5","4:2:7-5:3","4:6:6-9","4:7:1-5","5:1:3-2:2","5:2:5-7","5:3:5-5:3","6:1:1-7","6:2:1-3:1","6:3:4-5:3","6:6:7-8:4","7:2:1-6","7:3:5-4:2","7:5:3-11","8:1:1-2:1","8:3:2-5:4","8:7:1-8:5"];var Demai=["1:1:1-5","1:1:10-2:1","1:2:4-5","1:3:6-16","1:3:21-4:1","1:4:7-8","2:1:1-3","2:1:6-12","2:1:19-2:4","2:3:4-4:2","2:4:4-5:4","3:1:5-7","3:2:1-4","3:3:5-4:3","3:4:5-7","3:4:9-5:1","4:1:4-8","4:2:2-3:4","4:3:8-5:4","5:1:2-2:1","5:2:5-8","5:3:3-5:1","5:6:2-8:4","5:8:8-11","6:1:1-6","6:1:9-2:5","6:2:9-3:1","6:5:3-6","6:8:1-7","7:1:4-2:4","7:4:2-4","7:4:5-6:1","7:6:6-7:1","7:8:1-3"];var Kilayim=["1:1:1-4","1:2:1-4:3","1:6:3-7:3","1:7:6-9:2","1:9:4-5","2:1:1-5","2:1:9-11","2:3:2-4","2:3:4-4:3","2:5:3-6:2","2:6:5-7:1","2:8:2-7","3:1:1-2","3:1:2-3","3:1:6-2:3","3:3:1-4:1","3:4:3-5:1","3:6:1-6","4:1:2-5","4:1:7-8","4:2:4-9","4:3:2-5:1","4:6:3-5","5:1:4-5","5:1:5-2:2","5:3:1-4:1","5:5:2-6:3","6:1:1-3","6:1:4-2:2","6:2:5-3:4","6:4:4-9","7:1:3-2:3","7:2:6-3:2","7:3:4-4:2","7:6:2-5","8:1:3-4","8:1:6-8","8:2:1-3:2","8:3:6-4:5","9:1:2-7","9:1:12-2:5","9:3:3-8","9:3:13-4:5","9:5:2-6:3"];var Sheviit=["1:1:1-2:2","1:2:4-3:6","2:1:1-2","2:2:2-3:2","2:4:6-5:3","2:5:8-7:6","3:1:3-2:3","3:3:4-4:5","3:6:2-7:4","4:1:6-2:4","4:2:10-4:4","4:6:3-7:1","5:1:1-4","5:2:3-9","5:3:3-4:3","6:1:4-10","6:1:17-2:4","6:4:1-7","7:1:9-15","7:2:3-5","7:2:5-7","8:1:4-2:3","8:4:3-5:3","8:7:1-8:4","9:1:5-12","9:2:9-5:1","9:6:1-5","10:1:5-9","10:1:16-2:1","10:3:2-10","10:4:6"];var Terumot=["1:1:1-4","1:1:8-12","1:1:15-16","1:1:19-21","1:1:23-2:3","1:3:1-4:3","1:5:1-3","1:5:5-9","2:1:3-9","2:1:12-13","2:1:15-17","2:1:19-21","2:2:2-4","2:3:2-6","3:1:4-2:2","3:2:3-8","3:3:5-11","4:1:1-2","4:1:4-2:3","4:3:3-7","4:4:3-6","4:5:2-7:3","4:7:6-10","4:8:1-4","5:1:1-2","5:1:4-8","5:1:10-12","5:1:14-2:3","5:2:3-4","5:2:6-3:2","6:1:1-5","6:1:10","6:2:2","6:2:5-3:3","7:1:3-7","7:1:10-12","7:2:2-6","7:3:4-6","8:1:2","8:1:3","8:1:6-9","8:2:2-3:6","8:3:15-21","8:3:29-36","8:4:3-4","8:4:6-7","8:4:11-15","9:1:11-14","9:2:1-3","9:2:7-3:4","10:1:6-2:2","10:2:6-4:2","10:5:2-6:1","10:6:4-12","11:1:6-2:4","11:2:7-3:3","11:4:5-9","11:5:2-5","11:5:12-13"];var Maasrot=["1:1:1-3","1:1:5-9","1:2:5-13","1:3:4-4:2","1:4:6-7","1:4:10-5:3","2:1:1-4","2:1:6-8","2:1:9-2:2","2:3:2-4","2:3:8-4:5","2:4:10-14","3:1:3-4","3:1:6-10","3:1:12-2:1","3:2:4-3:2","3:4:1-7","3:4:10-14","4:1:5-2:3","4:3:1-4:4","5:1:1-3","5:1:5-7","5:2:1-5","5:2:6-3:1","5:3:4","5:3:8-11"];var Challah=["1:1:1-3","1:1:9-13","1:1:16-20","1:1:21-25","1:1:27-2:2","1:3:4-7","1:3:12-16","1:4:2-5:1","1:5:6-6:1","2:1:1-3","2:1:5-7","2:1:8-12","2:2:1-3:2","2:3:4-7","3:1:2-5","3:1:8","3:2:2-4:2","3:4:6-7","3:5:2-3","3:5:4-5","3:5:8-9","3:5:11-13","4:1:4-2:2","4:2:5-3:2","4:3:4-4:1","4:4:5-6","4:4:9-15","4:5:1-7"];var Orlah=["1:1:1-6","1:1:10-14","1:1:18-2:2","1:2:7-9","1:3:3-6","1:3:9-13","1:4:1-6","1:5:2-9","2:1:4-6","2:1:10-14","2:1:19-21","2:2:2","2:3:5-4:2","2:4:5-5:4","2:6:2-7:4","2:9:1-4","3:1:6-12","3:1:16-2:3","3:3:1-5:2","3:6:4-7:7"];var Bikkurim=["1:1:1-4","1:2:2-3","1:3:6-4:3","1:5:5-8","1:6:4-7:1","1:8:1-9:3","2:1:9-15","2:2:2-8","2:2:10-3:2","2:4:2-6:2","3:1:4-3:8","3:3:20-4:10","3:6:1-4"];var Shabbat=["1:1:1-2","1:1:3-7","1:1:9-10","1:1:14-17","1:1:20-23","1:1:26-2:2","1:2:6-11","1:3:3-7","1:3:11-4:4","1:4:6-9","1:4:15-5:1","1:5:4-7:3","1:8:3-10:2","1:11:2-8","2:1:9-13","2:1:17-2:1","2:3:3-6","2:5:1-6","2:5:8-6:1","2:6:9-7:3","3:1:1-8","3:1:10-13","3:3:2-6","3:3:8-14","3:4:4-6:2","3:7:2-6","3:7:9-13","4:1:1-2","4:1:3-7","4:2:4-9","5:1:1-7","5:2:5-4:2","6:1:1-2","6:1:7-10","6:2:2-8","6:2:11-3:2","6:4:4-5:3","6:6:2-8:2","6:9:6-14","7:1:1-3","7:1:4-6","7:1:7-9","7:1:12-15","7:2:1-6","7:2:9-12","7:2:14-16","7:2:17-19","7:2:20-22","7:2:27-32","7:2:35-37","7:2:41-45","7:2:49-54","7:2:59-4:2","8:1:1-5","8:1:9-2:3","8:3:5-6:1","9:1:1-2","9:1:4","9:2:3-3:2","9:3:4-4:2","9:6:2-7:7","10:2:1-3","10:4:2-5:2","10:5:4-6:2","11:1:3-7","11:2:3-3:2","11:5:2-6","12:1:1-4","12:1:7-3:2","12:3:5-4:3","13:1:1-2","13:1:4-3:3","13:5:1-3","14:1:1-2","14:2:3-3:5","14:4:2-6","15:1:1-2","15:2:3-3:3","16:1:2-4","16:1:9-3:3","16:5:1-7:2","17:1:1-6","17:2:4-5:1","18:1:1-5","18:1:6-2:1","19:1:1-3","19:1:8-2:1","19:3:1-4:2","19:4:2-5:2","19:5:2-6:3","20:1:4-3:2","23:1:1"];var Eruvin=["1:1:1-2","1:1:2-4","1:1:7-9","1:1:12-13","1:1:14-18","1:1:22-26","1:2:3-3:4","1:4:4-5:4","1:6:3-6","1:7:4-8:3","1:9:3-5","1:10:2-3","1:10:5-6","2:1:3-4","2:1:6-8","2:2:2-4:2","2:5:2-6:1","3:1:1-2","3:1:5-7","3:1:10-2:3","3:3:1-2","3:3:4-4:1","3:4:4-5","3:5:2-4","3:7:1-3","3:8:3-9:3","4:1:2-4","4:1:7-3:3","4:5:3-7:1","4:9:2-10:2","5:1:4-5","5:1:10-13","5:1:15-17","5:2:1-3","5:3:3-4:2","5:5:2-7:1","5:7:4-8:2","6:1:1-2:2","6:2:5-3:2","6:4:1-4","6:5:2-6:3","6:7:2-3","6:8:2-6","6:8:8-10:1","7:1:1-3","7:1:5-2:1","7:2:4-3:1","7:5:1-6:1","7:6:3-7:2","7:10:1-4","8:1:2-2:3","8:3:3-7","8:4:3-6:4","8:8:1-3","8:8:6-9:2","9:1:1-3","9:1:8-3:2","9:4:4-5:3","10:1:3-6","10:2:1-3:2","10:5:1-6:2","10:7:1-8:4","10:9:2-10:3","10:12:2-13:3","10:14:2-5"];var Pesachim=["1:1:1-4","1:1:9-12","1:1:17-2:2","1:3:4-4:4","1:4:6-5:2","1:5:5-6:2","1:7:2-8:2","1:8:3-6","1:8:7-9","1:8:12-13","2:1:4-7","2:1:11-16","2:2:2-9","2:2:12-13","2:2:16-3:1","2:3:4-6","2:4:4-9","2:4:10-5:4","2:7:3-6","3:1:11-12","3:2:3-3:2","3:3:5-9","3:4:3-6:3","3:7:4-8:3","4:1:1-4","4:1:10-13","4:3:2-5","4:4:1-4","4:8:1-9:1","4:9:5-9","5:1:2-6","5:2:1-6","5:2:8-10","5:3:1-3","5:3:7-4:1","5:4:5-9","5:4:12-6:1","5:7:2-8:3","6:1:1-4","6:1:8-13","6:1:15-19","6:2:2-3:3","6:4:4-5:2","6:5:4-5","6:5:5-6:2","7:1:1-5","7:1:7-2:3","7:2:8-4:3","7:5:4-6","7:6:2","7:6:5-7:4","7:7:5-8","7:8:2-9:3","7:10:1-2","7:11:2-5","7:12:2-13:2","7:13:4-7","8:1:2-5","8:1:7-10","8:3:2-3","8:4:3-5:2","8:6:4-8:3","8:8:6-9","9:1:4-2:1","9:3:2-4:3","9:6:1-6","9:7:1-9:1","10:1:1-2","10:1:7-14","10:3:1-4:1","10:5:4-7:1"];var Beitzah=["1:1:1-3","1:1:5-7","1:1:9-11","1:3:2-3","1:3:5-4:2","1:5:1-4","1:6:3-8:1","1:9:3-10:3","1:11:2-12:4","2:1:3-7","2:3:2-4:5","2:6:1-8:1","3:1:1-2","3:3:1-4:2","3:5:1-6:3","4:1:1-2","4:1:6-3:1","4:3:10-4:5","5:1:1-6","5:2:2-7","5:2:12-16","5:4:3-7:2"];var Yoma=["1:1:1-4","1:1:5-8","1:1:11-13","1:1:13-16","1:1:20-25","1:2:2-5","1:4:1-5:5","2:1:1-3","2:1:5-8","2:1:10-16","2:2:2-3","2:2:4-8","2:4:1-4","3:2:1-3:1","3:3:4-4:3","3:5:3-6:2","3:6:4-6","3:7:1-5","3:8:3-9","4:1:1-4","4:1:7-9","4:2:1-3:4","4:4:9-5:5","4:6:3-6","5:1:3-5","5:1:7-9","5:2:2-4:1","5:4:5-8","5:5:1-2","5:6:3-7","5:6:9-7:2","6:1:1-7","6:1:13-3:2","6:4:1-5:2","6:6:3-5","6:6:7-7:1","7:1:4-2:3","7:3:2-6","8:1:3-9","8:3:2-11","8:3:15-5:2","8:6:3-7:4"];var Sukkah=["1:1:1-2","1:1:4-5","1:1:7-10","1:1:14-2:1","1:3:2-4:3","1:5:4-7:2","1:8:2-10:2","2:1:1-2","2:2:2-4:2","2:4:5-5:6","2:7:2-8:3","3:1:1-4","3:1:8-3:2","3:4:2-3","3:6:2-7:2","3:9:2-10:4","3:11:2-12:1","4:1:2-2:2","4:3:4-4:2","4:5:4-6:2","4:6:5-6","5:1:1-2","5:1:3-2:2","5:3:4-5:1","5:6:2-7:1","5:8:1-6"];var Taanit=["1:1:1-2","1:1:5-9","1:1:13-17","1:2:4-3:3","1:3:8-4:6","1:5:1-6:4","1:6:9-8:2","2:1:2-8","2:1:13-2:3","2:2:11-3:2","2:6:2-10:1","2:11:4-12:3","2:13:2-14:2","3:1:3-3:1","3:4:3-5:2","3:7:1-9:3","3:10:3-11:4","4:1:2-6","4:1:10-15","4:2:3-8","4:2:14-3:2","4:3:4-4:2","4:5:2-6","4:5:9-13","4:5:16-22","4:6:4-7:2"];var Shekalim=["1:1:1-4","1:1:6-8","1:1:14-2:3","1:3:1-4","1:4:1-4","1:4:5-7","1:4:7","2:1:3-2:1","2:2:4-3:2","2:4:1-3","2:5:3-6","3:1:3-4","3:2:2-6","3:2:10-3:4","4:1:1-3","4:2:1-3","4:2:6-3:1","4:3:3-4:1","4:4:2-5","4:4:6-10","5:1:1-6","5:1:12-21","5:3:1-4:1","6:1:1-5","6:1:9-14","6:2:3-7","6:3:3-4:2","6:4:5-7","7:1:3-2:6","7:3:1-3","7:3:8-10","8:1:2-2:1","8:3:2-4:4"];var Megillah=["1:1:1-2","1:1:4","1:1:8-10","1:3:2-3","1:4:2-6","1:4:9-12","1:5:3-7","1:6:3-5","1:7:3-8:3","1:8:4-9:4","1:9:6-9","1:9:10-12","1:9:17-10:1","1:10:4-8","1:11:3-5","1:11:6-7","1:12:3-4","2:1:1-3","2:2:1-6","2:3:2-4:4","2:5:2-6:1","2:7:2-5","3:1:3-5","3:1:10-2:5","3:3:1-4:3","3:5:3-7:1","3:7:3-6","4:1:4-8","4:1:11-13","4:2:2-4:1","4:4:6-5:2","4:5:6-7:2","4:10:3-11:2","4:12:3-6"];var Chagigah=["1:1:1-3","1:1:8-9","1:1:9-18","1:1:20-2:3","1:2:4-4:2","1:6:2-7:3","1:8:4-10","2:1:1-2","2:1:6-9","2:1:11-15","2:2:4-6","2:3:3-4:3","2:5:2-5","2:6:3-7:3","3:1:1-3","3:1:4-7","3:2:4-5","3:2:7","3:2:10-3:3","3:4:1-3","3:5:1-7:1","3:8:2-4"];var Yevamot=["1:1:1-6","1:1:7-10","1:1:14-17","1:1:18-20","1:1:21-24","1:2:2-5","1:2:10-5:2","1:6:2-5","1:6:8-9","2:1:6-2:3","2:2:4-3:1","2:4:2-7","2:4:10-6:5","2:8:3-10:3","2:11:2-12:2","3:1:3-4","3:1:5-6","3:1:8-10","3:2:1-3:2","3:3:4-4:3","3:8:2-9:4","4:1:1-2","4:1:4-6","4:2:3-4","4:2:7-4:2","4:7:3-8:3","4:11:1-4","4:11:6-8","4:12:3-15:3","5:1:1-5","5:1:7-10","5:2:3-4:1","5:4:3-6:1","5:8:1-2","6:1:3-7","6:3:1-2","6:4:5-5:2","6:6:3-6","7:1:3-4","7:1:8-3:2","7:3:3-5","7:4:2-5:4","8:1:1-2","8:1:6-8","8:1:12-15","8:1:18-2:2","8:2:4-6","8:2:9-12","8:3:5-8","8:4:1-6:2","9:1:1-2:2","9:4:4-5:1","10:1:1-2","10:1:5-11","10:1:12-2:2","10:3:2-4","10:5:3-6:4","10:6:7-7:3","10:7:6-8","11:1:1-2","11:1:5-7","11:1:11-2:2","11:2:6-3:1","11:5:5-6:3","11:7:3-8","12:1:8-14","12:1:17-2:4","12:2:6-4:2","12:6:1-6","13:1:2-6","13:1:13-2:6","13:2:8-9","13:6:1-4","13:7:3-8:2","13:14:1-3","14:1:4-2:3","15:1:1-4","15:2:2-3:7","15:3:9-4:4","15:5:2-4","15:8:2-9:3","16:1:2-2:3","16:3:5-4:2","16:5:5-6:4","16:9:2"];var Ketubot=["1:1:1-4","1:1:6-9","1:1:14-17","1:2:5-3:1","1:3:5-4:5","1:5:3-6:3","1:8:2-9:3","1:10:3-4","2:1:1-4","2:2:1-4","2:2:4-3:3","2:4:5-6","2:5:4-7:2","2:7:4-9:4","2:10:3-8","3:1:4-7","3:1:12-13","3:1:16-18","3:3:3-5:1","3:5:4-6:2","3:6:3-7:2","3:8:1-9:3","4:1:1-4","4:1:6-2:1","4:2:3-3:2","4:4:3-7","4:4:8-9","4:4:12-7:1","4:8:4-12","4:9:1-11:3","4:12:2-14:3","5:1:3-4","5:1:6-2:2","5:3:1-4:1","5:5:2-3","5:5:4-6:3","5:6:5-7:5","5:8:3-10:1","6:1:2-3","6:3:2-4:2","6:5:2-6:3","6:7:1-4","7:1:1-3","7:2:1-5:1","7:6:6-7","7:7:3-5","7:8:2-9:3","8:2:2-4:2","8:6:2-9:1","8:10:3","9:1:1-2","9:1:5-7","9:1:12","9:3:1-4:2","9:5:3-6:2","9:7:6-8:1","9:9:1-10:1","10:1:1-6","10:2:3-4:1","10:4:4-5:2","11:1:1-5","11:2:4-3:2","11:4:2-6:2","11:7:1-8","12:2:2-3:3","12:3:8-10","12:3:14-5:2","13:1:2-5","13:2:3-3:1","13:3:4-4:3","13:7:1-8:2","13:10:2-11:3"];var Sotah=["1:1:1-6","1:1:9-10","1:2:1-5","1:2:7-10","1:3:2-4:3","1:5:1-6:1","1:7:4-8:5","1:8:11-10:4","2:1:2-4","2:1:9-2:5","2:2:9-4:1","2:5:1-5","2:5:6-6:1","3:1:4-2:1","3:3:2-4:1","3:4:6-11","3:5:3-6:5","3:6:6-8:2","4:1:3-2:2","4:4:1-5:3","5:1:5","5:2:3-5","5:2:6-8","5:2:11-3:2","5:4:3-5:6","6:1:1-2","6:2:4-3:1","6:3:2-4:4","7:1:1-5","7:2:2-3:2","7:4:4-7","7:4:9-5:3","7:5:6-6:3","8:1:1-2","8:2:2-3:3","8:3:6-9","8:3:12-4:3","8:5:5-8:1","8:9:2-10:1","9:1:2-6","9:2:1-7","9:4:2-5:4","9:5:7-6:3","9:8:1-11:2","9:11:8-13:2","9:14:1-15:6","9:16:1-4"];var Nedarim=["1:1:1-3","1:1:7-10","1:1:14-2:2","1:3:1-9","2:1:1-2","2:2:2-3:2","2:4:2-4","3:1:2-4","3:2:1-5","3:2:9-3:2","3:4:3-5:3","3:7:1-9:1","4:1:1-3","4:2:4-3:3","4:5:2-7:2","4:10:2-3","5:1:1-2","5:1:5-3:3","5:5:1-6:1","6:1:2-2:2","6:4:2-3","6:8:1-6","6:8:10-14","7:1:1-5","7:3:2-6:2","8:1:1-5","8:2:2-4:2","8:6:1-7:3","9:1:2-6","9:2:3-4:2","9:5:2-8:1","10:1:3-4","10:2:3-4:2","10:6:1-7:2","10:8:4-9","11:1:2-4","11:1:8-2:3","11:3:5-4:3","11:7:1-11:1","11:12:6"];var Nazir=["1:1:1-3","1:1:7-9","1:2:5-7","1:2:9-3:2","2:1:1-2","2:1:4-2:2","2:4:1-5:1","2:5:3-7:2","2:9:1-2","2:10:2-3","3:1:1-3","3:2:2","3:4:1-2","3:5:3-5","3:5:7-6:1","4:1:1-2","4:2:2-3:5","4:4:3-7","4:5:1-6:1","5:1:1-3","5:1:6-7","5:1:9-12","5:2:3-3:3","6:1:1-2","6:1:4-6","6:1:7-9","6:1:11-14","6:2:5-3:2","6:3:5-4:3","6:6:2-7:2","6:9:1-5","6:9:9-11:2","7:1:2-6","7:1:11-20","7:2:1-4","7:2:7-11","7:3:4-6","7:4:2-3","8:1:2-3","8:1:5-9","8:2:2-8","9:1:1-3","9:1:4-6","9:2:3-6","9:2:10-3:2","9:3:7-4:2","9:5:2-6:1"];var Gittin=["1:1:1-3","1:1:3-4","1:1:5-6","1:1:7-8","1:2:2-5","1:3:2-4:1","1:4:3-5","1:5:2-4","2:1:1-2","2:1:4-6","2:2:2-3:1","2:3:3-7","2:3:8-4:3","2:6:1-7:3","3:1:3-6","3:2:2-3:1","3:4:1-5:3","3:6:3-7:2","3:8:1-4","4:1:2-2:3","4:2:5-3:1","4:3:4-4:2","4:4:5-6","4:4:7-6:2","4:7:1-8:3","5:1:1-5","5:1:7-11","5:3:3-6","5:4:1-4","5:5:2-4","5:6:4-7:2","5:7:5-9:2","5:9:6-10:3","6:1:1-5","6:1:6-9","6:2:3-4","6:4:2-5:4","6:6:2-7:2","7:1:3-7","7:1:10-3:2","7:3:4-6","7:4:2-5","7:5:1-6:3","8:1:1-3","8:1:3-2:1","8:3:3-9","8:4:3-6:2","8:8:2-10:2","8:10:4-6","9:1:4-6","9:3:2-5","9:5:2-6:2","9:7:2-4","9:8:5-11:1"];var Kiddushin=["1:1:1-7","1:1:13-18","1:1:18-19","1:1:21-25","1:1:30-2:1","1:2:3-6","1:2:7","1:2:10-13","1:2:15-20","1:2:23-24","1:2:27-29","1:3:1-6","1:3:8-11","1:3:13-4:3","1:4:6-9","1:4:11-5:3","1:5:8-11","1:5:14-6:3","1:6:4-7:2","1:7:4-8","1:7:14-18","1:8:2-6","2:1:1-2","2:1:5-8","2:1:10-11","2:1:14-2:1","2:4:2-5","2:5:2-6:3","2:7:4-7","2:7:9-8:3","3:1:1-4","3:1:6-8","3:1:11-2:1","3:2:5-6","3:3:2-3","3:4:4-7","3:5:3-7","3:6:3-8:1","3:8:4-10:1","3:12:1-5","3:12:9-13:3","4:1:4-7","4:1:8-12","4:2:3-3:3","4:4:2-5:1","4:6:3-7:1","4:8:1-11:1","4:11:3-12:2"];var Shevuot=["1:1:1-2","1:1:3-5","1:1:5-2:1","1:2:3-7","1:3:2-4:2","1:4:3-5","1:6:3-8","1:7:2-3","2:1:4-7","2:1:9-11","2:3:2-5:1","3:1:2-3","3:2:2-3:2","3:4:2-4","3:4:8-5:2","3:5:3-7:2","3:7:7-8:4","3:8:9-9:5","4:1:1-20","4:2:3-3:1","4:3:4-5:2","4:7:1-9:2","5:1:1-2","5:1:4-2:4","5:3:4-4:2","5:4:4","5:5:1-6:1","6:1:2-4","6:1:7-2:4","6:3:2-4:2","6:5:1-3","6:6:3-7:2","6:8:4","7:1:3-4","7:1:6-8","7:2:4-4:2","7:5:4-6:2","7:7:2-4","7:7:9-8:3","8:1:2-5","8:1:9","8:1:12-2:3","8:3:2-4","8:3:5-6"];var Makkot=["1:1:1-4","1:2:2-4","1:3:2-4:2","1:6:2-7:3","2:1:1-3:1","2:5:1-6:1","2:6:7-11","3:1:1-3:1","3:7:1-11:1"];var Sanhedrin=["1:1:1-6","1:1:11-17","1:1:29-2:1","1:2:8-13","1:2:19-26","1:2:33-38","1:2:45-3:4","1:3:7-4:2","1:4:7-10","2:1:3-6","2:2:4-3:7","2:4:2-5:3","2:6:4-12","3:2:1-3:2","3:4:2-5:4","3:5:7-11","3:6:3-7:1","3:9:1-11","3:9:19-21","3:10:2-12:1","4:1:2-2:2","4:5:2-7:1","4:7:6-9:1","5:1:1-8","5:2:3-4","5:3:4-4:2","6:1:1-2","6:3:2-5:2","6:6:5-7:3","7:1:1-2","7:1:4-2:4","7:5:2-3","7:5:5-6","7:6:3-5","7:6:6-7:1","7:7:4-8:2","7:8:7-9:3","7:9:7-10:2","7:10:4-8","7:11:2-12:1","7:13:3-7","8:2:4-3:4","8:6:5-7:1","8:8:3-9:3","9:1:5-9","9:1:14-2:1","9:3:2-3","9:5:1-6:3","10:1:1-8","10:1:13-22","10:2:3-7","10:2:15-19","10:2:23-4:2","10:6:1-7:2","11:1:2-3:2","11:4:3-4","11:5:4-6:2"];var Horayot=["1:1:1-3","1:1:4-7","1:1:8-2:1","1:2:3-5","1:2:8-3:3","1:4:2-6:2","1:6:2-8:2","2:1:1-2","2:2:2-4:2","2:4:2-5:4","2:7:1-3","3:1:2-2:3","3:2:7-11","3:2:11-13","3:2:15-19","3:2:25-30","3:2:35-3:4","3:4:3-9","3:5:7-9"];var Niddah=["1:1:1-4","1:1:7-2:2","1:3:4-7","1:4:5-5:2","1:5:4-6:2","2:1:1-5","2:2:3-4:2","2:6:1-7:2","3:1:1-2:1","3:2:5-9","3:4:1-5","3:4:7-5:3"];var vilnaMap = {Berakhot:Berakhot,Peah:Peah,Demai:Demai,Kilayim:Kilayim,Sheviit:Sheviit,Terumot:Terumot,Maasrot:Maasrot,"Maaser Sheni":["1:1:1-3","1:1:5-10","1:1:13-16","1:1:19-20","1:2:2-5","1:2:8-3:1","1:3:2-4","2:1:1-2","2:1:8-10","2:1:14-16","2:2:3-6","2:3:2-6","2:3:9-4:1","3:1:1-4","3:2:2-5","3:2:6-3:1","3:3:7-9","3:4:3-5:3","3:5:7-6:4","3:6:5-9","4:1:4-7","4:1:10-2:3","4:2:7-3:4","4:3:8-4:2","4:4:6-5:1","4:5:2-6:1","4:6:5-9","5:1:1-4","5:1:10-2:1","5:2:9-3:1","5:3:5-9","5:4:5-5:1","5:5:8-12"],Challah:Challah,Orlah:Orlah,Bikkurim:Bikkurim,Shabbat:Shabbat,Eruvin:Eruvin,Pesachim:Pesachim,Beitzah:Beitzah,"Rosh Hashanah":["1:1:1-2","1:1:3-5","1:1:8","1:1:10-11","1:1:12-15","1:2:1-4","1:2:6-3:4","1:3:6-4:3","1:7:1-6","1:8:4","2:1:3-7","2:1:8-4:1","2:4:6-5:3","2:6:1-8:4","3:1:3-5","3:1:10-3:4","3:5:4-6:2","4:1:1-2","4:2:2-4:2","4:6:3-7:3","4:8:3-10:2","4:10:5"],Yoma:Yoma,Sukkah:Sukkah,Taanit:Taanit,Shekalim:Shekalim,Megillah:Megillah,Chagigah:Chagigah,"Moed Katan":["1:1:1-2","1:1:4-2:2","1:2:3-3:1","1:4:4-5:2","1:5:2-4","1:7:2-8:1","1:9:2-10:5","2:1:5-2:3","2:3:3-4:3","3:1:1-6","3:1:10-14","3:1:16-3:1","3:5:1-4","3:5:6-10","3:5:14-16","3:5:19-23","3:6:1-7:5","3:7:12-17","3:8:3-9:2"],Yevamot:Yevamot,Ketubot:Ketubot,Sotah:Sotah,Nedarim:Nedarim,Nazir:Nazir,Gittin:Gittin,Kiddushin:Kiddushin,"Bava Kamma":["1:1:1","1:1:3-7","1:1:8","1:1:10-2:2","1:2:3-4","1:2:5-3:1","2:1:1-2","2:1:5-2:2","2:2:2-3:2","2:4:2-5:3","2:5:3-6:3","3:1:2-4","3:1:7-2:2","3:3:4-4:4","3:4:5-5:2","3:6:2-9:1","3:10:1-11:2","4:1:2-5","4:1:6-2:3","4:4:3-5","4:5:2-3","4:5:3-6:3","5:1:1-2","5:2:1-5:1","5:6:1-7:1","5:7:6-8:3","6:1:3-2:4","6:2:5-4:2","6:5:2-7:2","7:1:1-2","7:2:1-3:2","7:3:2-4:1","7:4:3-5:2","8:1:1-4","8:2:2-3:3","8:5:1-6:1","8:8:1-2","9:1:3-3:1","9:5:1-4","9:5:5-6:2","9:8:1-9:2","10:1:1-2","10:1:5-2:3","10:6:1-8:2"],"Bava Metzia":["1:1:1-2","1:1:3-3:2","1:4:2","1:5:1-6:2","1:6:3-7:3","2:1:1-3","2:3:2-4:3","2:5:2-7","2:8:2-10:2","3:1:1-2","3:2:1-3:2","3:4:2-6:2","3:7:1-9:3","4:1:2-5","4:2:1-4","4:2:7-3:2","4:3:4-5:1","4:6:1-7:2","5:1:3-7","5:2:2-3:1","5:3:7-8","5:4:7-5:4","5:5:9-6:2","5:6:4-7:1","6:1:1-3","6:2:2-3:3","6:4:2-6:2","7:1:4-3:1","7:6:1-7:2","8:2:1-3:2","8:4:2-7:1","9:1:1-3:1","9:5:2-7:2","9:8:2-10:2","9:12:2-13:2","10:2:1-4:1","10:5:2-6:3"],"Bava Batra":["1:1:1-2","1:3:2-4:2","1:5:3-6","2:1:4-2:2","2:3:5-4:2","2:5:2-7:1","2:10:1-11:2","3:1:3-5","3:1:6-3:2","3:4:1-5:1","3:5:6-8:1","3:8:4-10:2","4:1:1-2:1","4:4:2-8:1","4:8:4","5:1:3-4","5:1:7-4:1","6:1:1-2","6:1:6-2:1","7:1:1-2","7:2:2-4:2","8:1:2-2:1","8:2:7-4:1","8:5:2-3","8:7:1-4","8:8:3-5","9:1:4-5","9:3:1-4:1","9:5:3-6:3","9:7:2-9:1","10:1:6-9","10:4:1-5:1","10:6:4-9:2","10:10:2-4"],Shevuot:Shevuot,Makkot:Makkot,Sanhedrin:Sanhedrin,"Avodah Zarah":["1:1:1-3","1:1:8-11","1:2:3-9","1:3:3-4:2","1:4:3-5:1","1:6:1-5","1:7:1-9:1","1:9:5-10:2","2:1:2-5","2:1:11-2:4","2:2:9-14","2:3:7-15","2:3:19-4:3","2:4:10-7:1","2:7:3-10","2:8:4-10","2:9:2-4","3:1:1-9","3:2:2-3:3","3:4:2-5:3","3:5:5-8","3:6:2-4","3:6:4-7:2","3:8:4-11:2","4:1:1-3","4:1:7-3:1","4:4:4-9","4:5:2-7:3","4:8:3-9:1","4:10:1-11:2","5:1:1-3","5:1:5-3:1","5:3:5-4:3","5:4:8-7:1","5:8:3-10:4","5:11:4-12:1","5:13:2-15:1"],Horayot:Horayot,Niddah:Niddah};
|
|
5333
|
-
|
|
5334
|
-
const vilnaStartDate = new Date(1980, 1, 2);
|
|
5335
|
-
/**
|
|
5336
|
-
* Yerushalmi Yomi configuration for Vilna Edition
|
|
5337
|
-
* @readonly
|
|
5338
|
-
*/
|
|
5339
|
-
const vilna = {
|
|
5340
|
-
ed: 'vilna',
|
|
5341
|
-
startDate: vilnaStartDate,
|
|
5342
|
-
startAbs: greg2abs(vilnaStartDate),
|
|
5343
|
-
skipYK9Av: true,
|
|
5344
|
-
shas: [['Berakhot', 68], ['Peah', 37], ['Demai', 34], ['Kilayim', 44], ['Sheviit', 31], ['Terumot', 59], ['Maasrot', 26], ['Maaser Sheni', 33], ['Challah', 28], ['Orlah', 20], ['Bikkurim', 13], ['Shabbat', 92], ['Eruvin', 65], ['Pesachim', 71], ['Beitzah', 22], ['Rosh Hashanah', 22], ['Yoma', 42], ['Sukkah', 26], ['Taanit', 26], ['Shekalim', 33], ['Megillah', 34], ['Chagigah', 22], ['Moed Katan', 19], ['Yevamot', 85], ['Ketubot', 72], ['Sotah', 47], ['Nedarim', 40], ['Nazir', 47], ['Gittin', 54], ['Kiddushin', 48], ['Bava Kamma', 44], ['Bava Metzia', 37], ['Bava Batra', 34], ['Shevuot', 44], ['Makkot', 9], ['Sanhedrin', 57], ['Avodah Zarah', 37], ['Horayot', 19], ['Niddah', 13]]
|
|
5345
|
-
};
|
|
5346
|
-
const schottensteinStartDate = new Date(2022, 10, 14);
|
|
5347
|
-
/**
|
|
5348
|
-
* Yerushalmi Yomi configuration for Schottenstein Edition
|
|
5349
|
-
* @readonly
|
|
5350
|
-
*/
|
|
5351
|
-
const schottenstein = {
|
|
5352
|
-
ed: 'schottenstein',
|
|
5353
|
-
startDate: schottensteinStartDate,
|
|
5354
|
-
startAbs: greg2abs(schottensteinStartDate),
|
|
5355
|
-
skipYK9Av: false,
|
|
5356
|
-
shas: [['Berakhot', 94], ['Peah', 73], ['Demai', 77], ['Kilayim', 84], ['Sheviit', 87], ['Terumot', 107], ['Maasrot', 46], ['Maaser Sheni', 59], ['Challah', 49], ['Orlah', 42], ['Bikkurim', 26], ['Shabbat', 113], ['Eruvin', 71], ['Pesachim', 86], ['Shekalim', 61], ['Yoma', 57], ['Sukkah', 33], ['Beitzah', 49], ['Rosh Hashanah', 27], ['Taanit', 31], ['Megillah', 41], ['Chagigah', 28], ['Moed Katan', 23], ['Yevamot', 88], ['Ketubot', 77], ['Nedarim', 42], ['Nazir', 53], ['Sotah', 52], ['Gittin', 53], ['Kiddushin', 53], ['Bava Kamma', 40], ['Bava Metzia', 35], ['Bava Batra', 39], ['Sanhedrin', 75], ['Shevuot', 49], ['Avodah Zarah', 34], ['Makkot', 11], ['Horayot', 18], ['Niddah', 11]]
|
|
5357
|
-
};
|
|
5358
|
-
const SUN = 0;
|
|
5359
|
-
const SAT$1 = 6;
|
|
5360
|
-
|
|
5361
|
-
/**
|
|
5362
|
-
* Using the Vilna edition, the Yerushalmi Daf Yomi program takes
|
|
5363
|
-
* ~4.25 years or 51 months.
|
|
5364
|
-
* Unlike the Daf Yomi Bavli cycle, this Yerushalmi cycle skips both
|
|
5365
|
-
* Yom Kippur and Tisha B'Av (returning `null`).
|
|
5366
|
-
* The page numbers are according to the Vilna
|
|
5367
|
-
* Edition which is used since 1900.
|
|
5368
|
-
*
|
|
5369
|
-
* The Schottenstein edition uses different page numbers and takes
|
|
5370
|
-
* ~6 years to complete.
|
|
5371
|
-
*
|
|
5372
|
-
* Throws an exception if the date is before Daf Yomi Yerushalmi
|
|
5373
|
-
* cycle began (2 February 1980 for Vilna,
|
|
5374
|
-
* 14 November 2022 for Schottenstein).
|
|
5375
|
-
*
|
|
5376
|
-
* @param {HDate|Date|number} date - Hebrew or Gregorian date
|
|
5377
|
-
* @param {any} config - either vilna or schottenstein
|
|
5378
|
-
* @return {any}
|
|
5379
|
-
*/
|
|
5380
|
-
function yerushalmiYomi(date, config) {
|
|
5381
|
-
if (typeof config !== 'object' || !Array.isArray(config.shas)) {
|
|
5382
|
-
throw new Error('invalid yerushalmi config');
|
|
5383
|
-
}
|
|
5384
|
-
const cday = typeof date === 'number' && !isNaN(date) ? date : isDate(date) ? greg2abs(date) : HDate.isHDate(date) ? date.abs() : throwTypeError(`non-date given to dafyomi: ${date}`);
|
|
5385
|
-
const startAbs = config.startAbs;
|
|
5386
|
-
if (cday < startAbs) {
|
|
5387
|
-
throw new RangeError(`Date ${date} too early; Yerushalmi Yomi cycle began on ${config.startDate}`);
|
|
5388
|
-
}
|
|
5389
|
-
const hd = new HDate(cday);
|
|
5390
|
-
// No Daf for Yom Kippur and Tisha B'Av
|
|
5391
|
-
if (config.skipYK9Av && skipDay(hd)) {
|
|
5392
5047
|
return null;
|
|
5393
5048
|
}
|
|
5394
|
-
const shas = config.shas;
|
|
5395
|
-
let numDapim = 0;
|
|
5396
|
-
for (let j = 0; j < shas.length; j++) {
|
|
5397
|
-
numDapim += shas[j][1];
|
|
5398
|
-
}
|
|
5399
|
-
let prevCycle = startAbs;
|
|
5400
|
-
let nextCycle = startAbs;
|
|
5401
|
-
while (cday >= nextCycle) {
|
|
5402
|
-
prevCycle = nextCycle;
|
|
5403
|
-
nextCycle += numDapim;
|
|
5404
|
-
nextCycle += numSpecialDays(config, prevCycle, nextCycle);
|
|
5405
|
-
}
|
|
5406
|
-
let total = cday - prevCycle - numSpecialDays(config, prevCycle, cday);
|
|
5407
|
-
for (let j = 0; j < shas.length; j++) {
|
|
5408
|
-
const masechet = shas[j];
|
|
5409
|
-
if (total < masechet[1]) {
|
|
5410
|
-
return {
|
|
5411
|
-
name: masechet[0],
|
|
5412
|
-
blatt: total + 1,
|
|
5413
|
-
ed: config.ed
|
|
5414
|
-
};
|
|
5415
|
-
}
|
|
5416
|
-
total -= masechet[1];
|
|
5417
|
-
}
|
|
5418
|
-
throw new Error('Interal error, this code should be unreachable');
|
|
5419
|
-
}
|
|
5420
|
-
|
|
5421
|
-
/**
|
|
5422
|
-
* @private
|
|
5423
|
-
* @param {HDate} hd
|
|
5424
|
-
* @return {boolean}
|
|
5425
|
-
*/
|
|
5426
|
-
function skipDay(hd) {
|
|
5427
|
-
if (hd.getMonth() === months.TISHREI && hd.getDate() === 10 || hd.getMonth() === months.AV && (hd.getDate() === 9 && hd.getDay() !== SAT$1 || hd.getDate() === 10 && hd.getDay() === SUN)) {
|
|
5428
|
-
return true;
|
|
5429
|
-
}
|
|
5430
|
-
return false;
|
|
5431
|
-
}
|
|
5432
|
-
|
|
5433
|
-
/**
|
|
5434
|
-
* @private
|
|
5435
|
-
* @param {any} config
|
|
5436
|
-
* @param {number} startAbs
|
|
5437
|
-
* @param {number} endAbs
|
|
5438
|
-
* @return {number}
|
|
5439
|
-
*/
|
|
5440
|
-
function numSpecialDays(config, startAbs, endAbs) {
|
|
5441
|
-
if (!config.skipYK9Av) {
|
|
5442
|
-
return 0;
|
|
5443
|
-
}
|
|
5444
|
-
const startYear = new HDate(startAbs).getFullYear();
|
|
5445
|
-
const endYear = new HDate(endAbs).getFullYear();
|
|
5446
|
-
let specialDays = 0;
|
|
5447
|
-
for (let year = startYear; year <= endYear; year++) {
|
|
5448
|
-
const ykAbs = new HDate(10, months.TISHREI, year).abs();
|
|
5449
|
-
if (ykAbs >= startAbs && ykAbs <= endAbs) {
|
|
5450
|
-
specialDays++;
|
|
5451
|
-
}
|
|
5452
|
-
let av9dt = new HDate(9, months.AV, year);
|
|
5453
|
-
if (av9dt.getDay() == SAT$1) {
|
|
5454
|
-
av9dt = av9dt.next();
|
|
5455
|
-
}
|
|
5456
|
-
const av9abs = av9dt.abs();
|
|
5457
|
-
if (av9abs >= startAbs && av9abs <= endAbs) {
|
|
5458
|
-
specialDays++;
|
|
5459
|
-
}
|
|
5460
|
-
}
|
|
5461
|
-
return specialDays;
|
|
5462
|
-
}
|
|
5463
|
-
|
|
5464
|
-
/**
|
|
5465
|
-
* Event wrapper around a Yerushalmi Yomi result
|
|
5466
|
-
*/
|
|
5467
|
-
class YerushalmiYomiEvent extends Event {
|
|
5468
|
-
/**
|
|
5469
|
-
* @param {HDate} date
|
|
5470
|
-
* @param {any} daf
|
|
5471
|
-
*/
|
|
5472
|
-
constructor(date, daf) {
|
|
5473
|
-
super(date, `${daf.name} ${daf.blatt}`, flags.YERUSHALMI_YOMI);
|
|
5474
|
-
this.daf = daf;
|
|
5475
|
-
}
|
|
5476
|
-
/**
|
|
5477
|
-
* Returns name of tractate and page (e.g. "Yerushalmi Beitzah 21").
|
|
5478
|
-
* @param {string} [locale] Optional locale name (defaults to active locale).
|
|
5479
|
-
* @return {string}
|
|
5480
|
-
*/
|
|
5481
|
-
render(locale) {
|
|
5482
|
-
const prefix = Locale.gettext('Yerushalmi', locale);
|
|
5483
|
-
return prefix + ' ' + this.renderBrief(locale);
|
|
5484
|
-
}
|
|
5485
|
-
/**
|
|
5486
|
-
* Returns name of tractate and page (e.g. "Beitzah 21").
|
|
5487
|
-
* @param {string} [locale] Optional locale name (defaults to active locale).
|
|
5488
|
-
* @return {string}
|
|
5489
|
-
*/
|
|
5490
|
-
renderBrief(locale) {
|
|
5491
|
-
locale = locale || Locale.getLocaleName();
|
|
5492
|
-
if (typeof locale === 'string') {
|
|
5493
|
-
locale = locale.toLowerCase();
|
|
5494
|
-
}
|
|
5495
|
-
const name = Locale.gettext(this.daf.name, locale);
|
|
5496
|
-
if (locale === 'he' || locale === 'he-x-nonikud') {
|
|
5497
|
-
return name + ' דף ' + gematriya(this.daf.blatt);
|
|
5498
|
-
}
|
|
5499
|
-
return name + ' ' + this.daf.blatt;
|
|
5500
|
-
}
|
|
5501
|
-
/**
|
|
5502
|
-
* Returns a link to sefaria.org
|
|
5503
|
-
* @return {string}
|
|
5504
|
-
*/
|
|
5505
|
-
url() {
|
|
5506
|
-
const daf = this.daf;
|
|
5507
|
-
if (daf.ed !== 'vilna') {
|
|
5508
|
-
return undefined;
|
|
5509
|
-
}
|
|
5510
|
-
const tractate = daf.name;
|
|
5511
|
-
const pageMap = vilnaMap[tractate];
|
|
5512
|
-
if (!Array.isArray(pageMap)) {
|
|
5513
|
-
return undefined;
|
|
5514
|
-
}
|
|
5515
|
-
const idx = daf.blatt - 1;
|
|
5516
|
-
const verses0 = pageMap[idx];
|
|
5517
|
-
if (typeof verses0 !== 'string') {
|
|
5518
|
-
return undefined;
|
|
5519
|
-
}
|
|
5520
|
-
const name0 = 'Jerusalem Talmud ' + tractate;
|
|
5521
|
-
const name = name0.replace(/ /g, '_');
|
|
5522
|
-
const verses = verses0.replace(/:/g, '.');
|
|
5523
|
-
return `https://www.sefaria.org/${name}.${verses}?lang=bi`;
|
|
5524
|
-
}
|
|
5525
5049
|
}
|
|
5526
5050
|
|
|
5527
5051
|
const NISAN$1 = months.NISAN;
|
|
@@ -5588,7 +5112,9 @@ function getYahrzeit_(hyear, gdate) {
|
|
|
5588
5112
|
function getBirthdayOrAnniversary_(hyear, gdate) {
|
|
5589
5113
|
const orig = HDate.isHDate(gdate) ? gdate : new HDate(gdate);
|
|
5590
5114
|
const origYear = orig.getFullYear();
|
|
5591
|
-
if (hyear
|
|
5115
|
+
if (hyear === origYear) {
|
|
5116
|
+
return orig;
|
|
5117
|
+
} else if (hyear < origYear) {
|
|
5592
5118
|
// `Hebrew year ${hyear} occurs on or before original date in ${origYear}`
|
|
5593
5119
|
return undefined;
|
|
5594
5120
|
}
|
|
@@ -5610,7 +5136,7 @@ function getBirthdayOrAnniversary_(hyear, gdate) {
|
|
|
5610
5136
|
return new HDate(day, month, hyear);
|
|
5611
5137
|
}
|
|
5612
5138
|
|
|
5613
|
-
var version="
|
|
5139
|
+
var version="4.0.0";
|
|
5614
5140
|
|
|
5615
5141
|
var headers$1={"plural-forms":"nplurals=2; plural=(n > 1);"};var contexts$1={"":{Berachot:["Berachos"],Shabbat:["Shabbos"],Taanit:["Taanis"],Yevamot:["Yevamos"],Ketubot:["Kesubos"],"Baba Batra":["Baba Basra"],Makkot:["Makkos"],Shevuot:["Shevuos"],Horayot:["Horayos"],Menachot:["Menachos"],Bechorot:["Bechoros"],Keritot:["Kerisos"],Midot:["Midos"],"Achrei Mot":["Achrei Mos"],Bechukotai:["Bechukosai"],"Beha'alotcha":["Beha'aloscha"],Bereshit:["Bereshis"],Chukat:["Chukas"],"Erev Shavuot":["Erev Shavuos"],"Erev Sukkot":["Erev Sukkos"],"Ki Tavo":["Ki Savo"],"Ki Teitzei":["Ki Seitzei"],"Ki Tisa":["Ki Sisa"],Matot:["Matos"],"Purim Katan":["Purim Koton"],Tazria:["Sazria"],"Shabbat Chazon":["Shabbos Chazon"],"Shabbat HaChodesh":["Shabbos HaChodesh"],"Shabbat HaGadol":["Shabbos HaGadol"],"Shabbat Nachamu":["Shabbos Nachamu"],"Shabbat Parah":["Shabbos Parah"],"Shabbat Shekalim":["Shabbos Shekalim"],"Shabbat Shuva":["Shabbos Shuvah"],"Shabbat Zachor":["Shabbos Zachor"],Shavuot:["Shavuos"],"Shavuot I":["Shavuos I"],"Shavuot II":["Shavuos II"],Shemot:["Shemos"],"Shmini Atzeret":["Shmini Atzeres"],"Simchat Torah":["Simchas Torah"],Sukkot:["Sukkos"],"Sukkot I":["Sukkos I"],"Sukkot II":["Sukkos II"],"Sukkot II (CH''M)":["Sukkos II (CH''M)"],"Sukkot III (CH''M)":["Sukkos III (CH''M)"],"Sukkot IV (CH''M)":["Sukkos IV (CH''M)"],"Sukkot V (CH''M)":["Sukkos V (CH''M)"],"Sukkot VI (CH''M)":["Sukkos VI (CH''M)"],"Sukkot VII (Hoshana Raba)":["Sukkos VII (Hoshana Raba)"],"Ta'anit Bechorot":["Ta'anis Bechoros"],"Ta'anit Esther":["Ta'anis Esther"],Toldot:["Toldos"],Vaetchanan:["Vaeschanan"],Yitro:["Yisro"],"Vezot Haberakhah":["Vezos Haberakhah"],Parashat:["Parshas"],"Leil Selichot":["Leil Selichos"],"Shabbat Mevarchim Chodesh":["Shabbos Mevorchim Chodesh"],"Shabbat Shirah":["Shabbos Shirah"],Tevet:["Teves"],"Asara B'Tevet":["Asara B'Teves"],Berakhot:["Berakhos"],Sheviit:["Sheviis"],Terumot:["Terumos"],Maasrot:["Maasros"],Eduyot:["Eduyos"],Avot:["Avos"],Bekhorot:["Bekhoros"],Middot:["Middos"],Oholot:["Oholos"],Tahorot:["Tahoros"],Mikvaot:["Mikvaos"],"Alot HaShachar":["Alos HaShachar"],"Kriat Shema, sof zeman":["Krias Shema, sof zman"],"Tefilah, sof zeman":["Tefilah, sof zman"],"Kriat Shema, sof zeman (MGA)":["Krias Shema, sof zman (MGA)"],"Tefilah, sof zeman (MGA)":["Tefilah, sof zman (MGA)"],"Chatzot HaLailah":["Chatzos HaLailah"],"Chatzot hayom":["Chatzos"],"Tzeit HaKochavim":["Tzeis HaKochavim"],"Birkat Hachamah":["Birkas Hachamah"],"Shushan Purim Katan":["Shushan Purim Koton"]}};var poAshkenazi = {headers:headers$1,contexts:contexts$1};
|
|
5616
5142
|
|
|
@@ -5879,9 +5405,6 @@ const RECOGNIZED_OPTIONS = {
|
|
|
5879
5405
|
noRoshChodesh: 1,
|
|
5880
5406
|
noSpecialShabbat: 1,
|
|
5881
5407
|
noHolidays: 1,
|
|
5882
|
-
dafyomi: 1,
|
|
5883
|
-
mishnaYomi: 1,
|
|
5884
|
-
nachYomi: 1,
|
|
5885
5408
|
omer: 1,
|
|
5886
5409
|
molad: 1,
|
|
5887
5410
|
ashkenazi: 1,
|
|
@@ -5893,8 +5416,7 @@ const RECOGNIZED_OPTIONS = {
|
|
|
5893
5416
|
userMask: 1,
|
|
5894
5417
|
yomKippurKatan: 1,
|
|
5895
5418
|
hour12: 1,
|
|
5896
|
-
|
|
5897
|
-
yerushalmiEdition: 1
|
|
5419
|
+
dailyLearning: 1
|
|
5898
5420
|
};
|
|
5899
5421
|
|
|
5900
5422
|
/**
|
|
@@ -6003,11 +5525,6 @@ function checkCandleOptions(options) {
|
|
|
6003
5525
|
* @property {boolean} shabbatMevarchim - add Shabbat Mevarchim
|
|
6004
5526
|
* @property {boolean} noSpecialShabbat - suppress Special Shabbat
|
|
6005
5527
|
* @property {boolean} noHolidays - suppress regular holidays
|
|
6006
|
-
* @property {boolean} dafyomi - Babylonian Talmud Daf Yomi
|
|
6007
|
-
* @property {boolean} yerushalmi - Jerusalem Talmud (Yerushalmi) Yomi
|
|
6008
|
-
* @property {number} yerushalmiEdition - Use 1 for Vilna, 2 for Schottenstein
|
|
6009
|
-
* @property {boolean} mishnaYomi - include Mishna Yomi
|
|
6010
|
-
* @property {boolean} nachYomi - include Nach Yomi
|
|
6011
5528
|
* @property {boolean} omer - include Days of the Omer
|
|
6012
5529
|
* @property {boolean} molad - include event announcing the molad
|
|
6013
5530
|
* @property {boolean} ashkenazi - use Ashkenazi transliterations for event titles (default Sephardi transliterations)
|
|
@@ -6027,6 +5544,9 @@ function checkCandleOptions(options) {
|
|
|
6027
5544
|
* See {@link https://en.wikipedia.org/wiki/Yom_Kippur_Katan#Practices Wikipedia Yom Kippur Katan practices}
|
|
6028
5545
|
* @property {boolean} hour12 - Whether to use 12-hour time (as opposed to 24-hour time).
|
|
6029
5546
|
* Possible values are `true` and `false`; the default is locale dependent.
|
|
5547
|
+
* @property {Object<string,any>} dailyLearning - map of options to enable daily study calendars
|
|
5548
|
+
* such as `dafYomi`, `mishnaYomi`, `nachYomi` with value `true`. For `yerushalmi`
|
|
5549
|
+
* the value should be a `number` for edition (`1` for Vilna, `2` for Schottenstein).
|
|
6030
5550
|
*/
|
|
6031
5551
|
|
|
6032
5552
|
/**
|
|
@@ -6124,13 +5644,25 @@ function getMaskFromOptions(options) {
|
|
|
6124
5644
|
if (m & MINOR_FAST) delete options.noMinorFast;
|
|
6125
5645
|
if (m & SPECIAL_SHABBAT) delete options.noSpecialShabbat;
|
|
6126
5646
|
if (m & PARSHA_HASHAVUA) options.sedrot = true;
|
|
6127
|
-
if (m & DAF_YOMI)
|
|
5647
|
+
if (m & DAF_YOMI) {
|
|
5648
|
+
options.dailyLearning = options.dailyLearning || {};
|
|
5649
|
+
options.dailyLearning.dafYomi = true;
|
|
5650
|
+
}
|
|
6128
5651
|
if (m & OMER_COUNT) options.omer = true;
|
|
6129
5652
|
if (m & SHABBAT_MEVARCHIM) options.shabbatMevarchim = true;
|
|
6130
|
-
if (m & flags.MISHNA_YOMI)
|
|
6131
|
-
|
|
5653
|
+
if (m & flags.MISHNA_YOMI) {
|
|
5654
|
+
options.dailyLearning = options.dailyLearning || {};
|
|
5655
|
+
options.dailyLearning.mishnaYomi = true;
|
|
5656
|
+
}
|
|
5657
|
+
if (m & flags.NACH_YOMI) {
|
|
5658
|
+
options.dailyLearning = options.dailyLearning || {};
|
|
5659
|
+
options.dailyLearning.nachYomi = true;
|
|
5660
|
+
}
|
|
6132
5661
|
if (m & flags.YOM_KIPPUR_KATAN) options.yomKippurKatan = true;
|
|
6133
|
-
if (m & flags.YERUSHALMI_YOMI)
|
|
5662
|
+
if (m & flags.YERUSHALMI_YOMI) {
|
|
5663
|
+
options.dailyLearning = options.dailyLearning || {};
|
|
5664
|
+
options.dailyLearning.yerushalmi = 1;
|
|
5665
|
+
}
|
|
6134
5666
|
options.userMask = true;
|
|
6135
5667
|
return m;
|
|
6136
5668
|
}
|
|
@@ -6167,15 +5699,6 @@ function getMaskFromOptions(options) {
|
|
|
6167
5699
|
if (options.sedrot) {
|
|
6168
5700
|
mask |= PARSHA_HASHAVUA;
|
|
6169
5701
|
}
|
|
6170
|
-
if (options.dafyomi) {
|
|
6171
|
-
mask |= DAF_YOMI;
|
|
6172
|
-
}
|
|
6173
|
-
if (options.mishnaYomi) {
|
|
6174
|
-
mask |= flags.MISHNA_YOMI;
|
|
6175
|
-
}
|
|
6176
|
-
if (options.nachYomi) {
|
|
6177
|
-
mask |= flags.NACH_YOMI;
|
|
6178
|
-
}
|
|
6179
5702
|
if (options.omer) {
|
|
6180
5703
|
mask |= OMER_COUNT;
|
|
6181
5704
|
}
|
|
@@ -6185,8 +5708,20 @@ function getMaskFromOptions(options) {
|
|
|
6185
5708
|
if (options.yomKippurKatan) {
|
|
6186
5709
|
mask |= flags.YOM_KIPPUR_KATAN;
|
|
6187
5710
|
}
|
|
6188
|
-
if (options.
|
|
6189
|
-
|
|
5711
|
+
if (options.dailyLearning) {
|
|
5712
|
+
const dailyLearning = options.dailyLearning;
|
|
5713
|
+
if (dailyLearning.dafYomi) {
|
|
5714
|
+
mask |= DAF_YOMI;
|
|
5715
|
+
}
|
|
5716
|
+
if (dailyLearning.mishnaYomi) {
|
|
5717
|
+
mask |= flags.MISHNA_YOMI;
|
|
5718
|
+
}
|
|
5719
|
+
if (dailyLearning.nachYomi) {
|
|
5720
|
+
mask |= flags.NACH_YOMI;
|
|
5721
|
+
}
|
|
5722
|
+
if (dailyLearning.yerushalmi) {
|
|
5723
|
+
mask |= flags.YERUSHALMI_YOMI;
|
|
5724
|
+
}
|
|
6190
5725
|
}
|
|
6191
5726
|
return mask;
|
|
6192
5727
|
}
|
|
@@ -6264,14 +5799,16 @@ class HebrewCalendar {
|
|
|
6264
5799
|
* Additional non-default event types can be specified:
|
|
6265
5800
|
* * Parashat HaShavua - weekly Torah Reading on Saturdays (`options.sedrot`)
|
|
6266
5801
|
* * Counting of the Omer (`options.omer`)
|
|
6267
|
-
* * Babylonian Talmud Daf Yomi (`options.dafyomi`)
|
|
6268
|
-
* * Jerusalem Talmud (Yerushalmi) Yomi (`options.yerushalmi`)
|
|
6269
|
-
* * Mishna Yomi (`options.mishnaYomi`)
|
|
6270
|
-
* * Nach Yomi (`options.nachYomi`)
|
|
6271
5802
|
* * Shabbat Mevarchim HaChodesh on Saturday before Rosh Chodesh (`options.shabbatMevarchim`)
|
|
6272
5803
|
* * Molad announcement on Saturday before Rosh Chodesh (`options.molad`)
|
|
6273
5804
|
* * Yom Kippur Katan (`options.yomKippurKatan`)
|
|
6274
5805
|
*
|
|
5806
|
+
* Daily Study of texts:
|
|
5807
|
+
* * Babylonian Talmud Daf Yomi (`options.dailyLearning.dafYomi`)
|
|
5808
|
+
* * Jerusalem Talmud (Yerushalmi) Yomi (`options.dailyLearning.yerushalmi`)
|
|
5809
|
+
* * Mishna Yomi (`options.dailyLearning.mishnaYomi`)
|
|
5810
|
+
* * Nach Yomi (`options.dailyLearning.nachYomi`)
|
|
5811
|
+
*
|
|
6275
5812
|
* Candle-lighting and Havdalah times are approximated using latitude and longitude
|
|
6276
5813
|
* specified by the {@link Location} class. The `Location` class contains a small
|
|
6277
5814
|
* database of cities with their associated geographic information and time-zone information.
|
|
@@ -6369,15 +5906,6 @@ class HebrewCalendar {
|
|
|
6369
5906
|
if (startGreg.getFullYear() < 100) {
|
|
6370
5907
|
options.candlelighting = false;
|
|
6371
5908
|
}
|
|
6372
|
-
let mishnaYomiIndex;
|
|
6373
|
-
if (options.mishnaYomi) {
|
|
6374
|
-
mishnaYomiIndex = new MishnaYomiIndex();
|
|
6375
|
-
}
|
|
6376
|
-
let nachYomiIndex;
|
|
6377
|
-
if (options.nachYomi) {
|
|
6378
|
-
nachYomiIndex = new NachYomiIndex();
|
|
6379
|
-
}
|
|
6380
|
-
const yerushalmiCfg = options.yerushalmiEdition === 2 ? schottenstein : vilna;
|
|
6381
5909
|
for (let abs = startAbs; abs <= endAbs; abs++) {
|
|
6382
5910
|
const hd = new HDate(abs);
|
|
6383
5911
|
const hyear = hd.getFullYear();
|
|
@@ -6405,23 +5933,19 @@ class HebrewCalendar {
|
|
|
6405
5933
|
evts.push(new ParshaEvent(hd, parsha0.parsha, il, parsha0.num));
|
|
6406
5934
|
}
|
|
6407
5935
|
}
|
|
6408
|
-
|
|
6409
|
-
|
|
6410
|
-
|
|
6411
|
-
|
|
6412
|
-
|
|
6413
|
-
|
|
6414
|
-
|
|
6415
|
-
|
|
6416
|
-
|
|
6417
|
-
|
|
6418
|
-
|
|
6419
|
-
|
|
6420
|
-
|
|
6421
|
-
}
|
|
6422
|
-
if (options.nachYomi && abs >= nachYomiStart) {
|
|
6423
|
-
const nachYomi = nachYomiIndex.lookup(abs);
|
|
6424
|
-
evts.push(new NachYomiEvent(hd, nachYomi));
|
|
5936
|
+
const dailyLearning = options.dailyLearning;
|
|
5937
|
+
if (typeof dailyLearning === 'object') {
|
|
5938
|
+
Object.entries(dailyLearning).forEach(kv => {
|
|
5939
|
+
const key = kv[0];
|
|
5940
|
+
const val = kv[1];
|
|
5941
|
+
if (val) {
|
|
5942
|
+
const name = key === 'yerushalmi' ? val === 2 ? 'yerushalmi-schottenstein' : 'yerushalmi-vilna' : key;
|
|
5943
|
+
const learningEv = DailyLearning.lookup(name, hd);
|
|
5944
|
+
if (learningEv) {
|
|
5945
|
+
evts.push(learningEv);
|
|
5946
|
+
}
|
|
5947
|
+
}
|
|
5948
|
+
});
|
|
6425
5949
|
}
|
|
6426
5950
|
if (options.omer && abs >= beginOmer && abs <= endOmer) {
|
|
6427
5951
|
const omer = abs - beginOmer + 1;
|
|
@@ -6750,8 +6274,7 @@ function appendHolidayAndRelated(events, ev, options, candlesEv, dow) {
|
|
|
6750
6274
|
|
|
6751
6275
|
exports.AsaraBTevetEvent = AsaraBTevetEvent;
|
|
6752
6276
|
exports.CandleLightingEvent = CandleLightingEvent;
|
|
6753
|
-
exports.
|
|
6754
|
-
exports.DafYomiEvent = DafYomiEvent;
|
|
6277
|
+
exports.DailyLearning = DailyLearning;
|
|
6755
6278
|
exports.Event = Event;
|
|
6756
6279
|
exports.HDate = HDate;
|
|
6757
6280
|
exports.HavdalahEvent = HavdalahEvent;
|
|
@@ -6761,12 +6284,8 @@ exports.HolidayEvent = HolidayEvent;
|
|
|
6761
6284
|
exports.Locale = Locale;
|
|
6762
6285
|
exports.Location = Location;
|
|
6763
6286
|
exports.MevarchimChodeshEvent = MevarchimChodeshEvent;
|
|
6764
|
-
exports.MishnaYomiEvent = MishnaYomiEvent;
|
|
6765
|
-
exports.MishnaYomiIndex = MishnaYomiIndex;
|
|
6766
6287
|
exports.Molad = Molad;
|
|
6767
6288
|
exports.MoladEvent = MoladEvent;
|
|
6768
|
-
exports.NachYomiEvent = NachYomiEvent;
|
|
6769
|
-
exports.NachYomiIndex = NachYomiIndex;
|
|
6770
6289
|
exports.OmerEvent = OmerEvent;
|
|
6771
6290
|
exports.ParshaEvent = ParshaEvent;
|
|
6772
6291
|
exports.RoshChodeshEvent = RoshChodeshEvent;
|
|
@@ -6774,14 +6293,10 @@ exports.RoshHashanaEvent = RoshHashanaEvent;
|
|
|
6774
6293
|
exports.Sedra = Sedra;
|
|
6775
6294
|
exports.SolarCalc = SolarCalc;
|
|
6776
6295
|
exports.TimedEvent = TimedEvent;
|
|
6777
|
-
exports.YerushalmiYomiEvent = YerushalmiYomiEvent;
|
|
6778
6296
|
exports.Zmanim = Zmanim;
|
|
6779
6297
|
exports.flags = flags;
|
|
6780
6298
|
exports.gematriya = gematriya;
|
|
6781
6299
|
exports.greg = greg;
|
|
6782
6300
|
exports.months = months;
|
|
6783
6301
|
exports.parshiot = parshiot;
|
|
6784
|
-
exports.schottenstein = schottenstein;
|
|
6785
6302
|
exports.version = version;
|
|
6786
|
-
exports.vilna = vilna;
|
|
6787
|
-
exports.yerushalmiYomi = yerushalmiYomi;
|