@hebcal/leyning 6.2.1 → 6.2.3
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 +2 -1
- package/dist/bundle.js +77 -238
- package/dist/bundle.min.js +2 -2
- package/dist/index.js +48 -200
- package/dist/index.mjs +48 -198
- package/package.json +14 -14
package/dist/bundle.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @hebcal/leyning v6.2.
|
|
1
|
+
/*! @hebcal/leyning v6.2.3 */
|
|
2
2
|
var hebcal__leyning = (function (exports, core) {
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
@@ -91,36 +91,31 @@ var createPropertyDescriptor$2 = function (bitmap, value) {
|
|
|
91
91
|
|
|
92
92
|
var NATIVE_BIND = functionBindNative;
|
|
93
93
|
|
|
94
|
-
var $
|
|
95
|
-
var FunctionPrototype$1 = $Function.prototype;
|
|
96
|
-
var bind = FunctionPrototype$1.bind;
|
|
94
|
+
var FunctionPrototype$1 = Function.prototype;
|
|
97
95
|
var call$3 = FunctionPrototype$1.call;
|
|
98
|
-
var
|
|
96
|
+
var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype$1.bind.bind(call$3, call$3);
|
|
99
97
|
|
|
100
|
-
var functionUncurryThis = function (fn) {
|
|
101
|
-
|
|
102
|
-
// https://github.com/zloirock/core-js/issues/1128
|
|
103
|
-
// https://github.com/zloirock/core-js/issues/1130
|
|
104
|
-
return fn instanceof $Function ? NATIVE_BIND ? uncurryThis$a(fn) : function () {
|
|
98
|
+
var functionUncurryThis = NATIVE_BIND ? uncurryThisWithBind : function (fn) {
|
|
99
|
+
return function () {
|
|
105
100
|
return call$3.apply(fn, arguments);
|
|
106
|
-
}
|
|
101
|
+
};
|
|
107
102
|
};
|
|
108
103
|
|
|
109
|
-
var uncurryThis$
|
|
104
|
+
var uncurryThis$8 = functionUncurryThis;
|
|
110
105
|
|
|
111
|
-
var toString$1 = uncurryThis$
|
|
112
|
-
var stringSlice = uncurryThis$
|
|
106
|
+
var toString$1 = uncurryThis$8({}.toString);
|
|
107
|
+
var stringSlice = uncurryThis$8(''.slice);
|
|
113
108
|
|
|
114
109
|
var classofRaw = function (it) {
|
|
115
110
|
return stringSlice(toString$1(it), 8, -1);
|
|
116
111
|
};
|
|
117
112
|
|
|
118
|
-
var uncurryThis$
|
|
113
|
+
var uncurryThis$7 = functionUncurryThis;
|
|
119
114
|
var fails$6 = fails$9;
|
|
120
115
|
var classof$1 = classofRaw;
|
|
121
116
|
|
|
122
117
|
var $Object$2 = Object;
|
|
123
|
-
var split = uncurryThis$
|
|
118
|
+
var split = uncurryThis$7(''.split);
|
|
124
119
|
|
|
125
120
|
// fallback for non-array-like ES3 and non-enumerable old V8 strings
|
|
126
121
|
var indexedObject = fails$6(function () {
|
|
@@ -200,9 +195,9 @@ var getBuiltIn$3 = function (namespace, method) {
|
|
|
200
195
|
return arguments.length < 2 ? aFunction(global$a[namespace]) : global$a[namespace] && global$a[namespace][method];
|
|
201
196
|
};
|
|
202
197
|
|
|
203
|
-
var uncurryThis$
|
|
198
|
+
var uncurryThis$6 = functionUncurryThis;
|
|
204
199
|
|
|
205
|
-
var objectIsPrototypeOf = uncurryThis$
|
|
200
|
+
var objectIsPrototypeOf = uncurryThis$6({}.isPrototypeOf);
|
|
206
201
|
|
|
207
202
|
var getBuiltIn$2 = getBuiltIn$3;
|
|
208
203
|
|
|
@@ -348,10 +343,10 @@ var store$2 = sharedStore;
|
|
|
348
343
|
(shared$3.exports = function (key, value) {
|
|
349
344
|
return store$2[key] || (store$2[key] = value !== undefined ? value : {});
|
|
350
345
|
})('versions', []).push({
|
|
351
|
-
version: '3.
|
|
346
|
+
version: '3.26.1',
|
|
352
347
|
mode: 'global',
|
|
353
348
|
copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',
|
|
354
|
-
license: 'https://github.com/zloirock/core-js/blob/v3.
|
|
349
|
+
license: 'https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE',
|
|
355
350
|
source: 'https://github.com/zloirock/core-js'
|
|
356
351
|
});
|
|
357
352
|
|
|
@@ -365,10 +360,10 @@ var toObject$2 = function (argument) {
|
|
|
365
360
|
return $Object(requireObjectCoercible(argument));
|
|
366
361
|
};
|
|
367
362
|
|
|
368
|
-
var uncurryThis$
|
|
363
|
+
var uncurryThis$5 = functionUncurryThis;
|
|
369
364
|
var toObject$1 = toObject$2;
|
|
370
365
|
|
|
371
|
-
var hasOwnProperty = uncurryThis$
|
|
366
|
+
var hasOwnProperty = uncurryThis$5({}.hasOwnProperty);
|
|
372
367
|
|
|
373
368
|
// `HasOwnProperty` abstract operation
|
|
374
369
|
// https://tc39.es/ecma262/#sec-hasownproperty
|
|
@@ -377,11 +372,11 @@ var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {
|
|
|
377
372
|
return hasOwnProperty(toObject$1(it), key);
|
|
378
373
|
};
|
|
379
374
|
|
|
380
|
-
var uncurryThis$
|
|
375
|
+
var uncurryThis$4 = functionUncurryThis;
|
|
381
376
|
|
|
382
377
|
var id = 0;
|
|
383
378
|
var postfix = Math.random();
|
|
384
|
-
var toString = uncurryThis$
|
|
379
|
+
var toString = uncurryThis$4(1.0.toString);
|
|
385
380
|
|
|
386
381
|
var uid$2 = function (key) {
|
|
387
382
|
return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
|
|
@@ -595,11 +590,11 @@ var functionName = {
|
|
|
595
590
|
CONFIGURABLE: CONFIGURABLE
|
|
596
591
|
};
|
|
597
592
|
|
|
598
|
-
var uncurryThis$
|
|
593
|
+
var uncurryThis$3 = functionUncurryThis;
|
|
599
594
|
var isCallable$4 = isCallable$a;
|
|
600
595
|
var store$1 = sharedStore;
|
|
601
596
|
|
|
602
|
-
var functionToString = uncurryThis$
|
|
597
|
+
var functionToString = uncurryThis$3(Function.toString);
|
|
603
598
|
|
|
604
599
|
// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
|
|
605
600
|
if (!isCallable$4(store$1.inspectSource)) {
|
|
@@ -630,7 +625,6 @@ var hiddenKeys$3 = {};
|
|
|
630
625
|
|
|
631
626
|
var NATIVE_WEAK_MAP = weakMapBasicDetection;
|
|
632
627
|
var global$3 = global$b;
|
|
633
|
-
var uncurryThis$3 = functionUncurryThis;
|
|
634
628
|
var isObject = isObject$5;
|
|
635
629
|
var createNonEnumerableProperty$1 = createNonEnumerableProperty$2;
|
|
636
630
|
var hasOwn$3 = hasOwnProperty_1;
|
|
@@ -658,20 +652,22 @@ var getterFor = function (TYPE) {
|
|
|
658
652
|
|
|
659
653
|
if (NATIVE_WEAK_MAP || shared.state) {
|
|
660
654
|
var store = shared.state || (shared.state = new WeakMap());
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
655
|
+
/* eslint-disable no-self-assign -- prototype methods protection */
|
|
656
|
+
store.get = store.get;
|
|
657
|
+
store.has = store.has;
|
|
658
|
+
store.set = store.set;
|
|
659
|
+
/* eslint-enable no-self-assign -- prototype methods protection */
|
|
664
660
|
set = function (it, metadata) {
|
|
665
|
-
if (
|
|
661
|
+
if (store.has(it)) throw TypeError$1(OBJECT_ALREADY_INITIALIZED);
|
|
666
662
|
metadata.facade = it;
|
|
667
|
-
|
|
663
|
+
store.set(it, metadata);
|
|
668
664
|
return metadata;
|
|
669
665
|
};
|
|
670
666
|
get = function (it) {
|
|
671
|
-
return
|
|
667
|
+
return store.get(it) || {};
|
|
672
668
|
};
|
|
673
669
|
has = function (it) {
|
|
674
|
-
return
|
|
670
|
+
return store.has(it);
|
|
675
671
|
};
|
|
676
672
|
} else {
|
|
677
673
|
var STATE = sharedKey('state');
|
|
@@ -1107,23 +1103,21 @@ var Genesis=[0,31,25,24,26,32,22,24,22,29,32,32,20,18,24,21,16,27,33,38,18,34,24
|
|
|
1107
1103
|
* @readonly
|
|
1108
1104
|
* @const {string[]}
|
|
1109
1105
|
*/
|
|
1110
|
-
|
|
1111
1106
|
var BOOK = ['', 'Genesis', 'Exodus', 'Leviticus', 'Numbers', 'Deuteronomy'];
|
|
1107
|
+
|
|
1112
1108
|
/**
|
|
1113
1109
|
* Formats parsha as a string
|
|
1114
1110
|
* @param {string[]} parsha
|
|
1115
1111
|
* @return {string}
|
|
1116
1112
|
*/
|
|
1117
|
-
|
|
1118
1113
|
function parshaToString(parsha) {
|
|
1119
1114
|
var s = parsha[0];
|
|
1120
|
-
|
|
1121
1115
|
if (parsha.length == 2) {
|
|
1122
1116
|
s += '-' + parsha[1];
|
|
1123
1117
|
}
|
|
1124
|
-
|
|
1125
1118
|
return s;
|
|
1126
1119
|
}
|
|
1120
|
+
|
|
1127
1121
|
/**
|
|
1128
1122
|
* Represents an aliyah
|
|
1129
1123
|
* @typedef {Object} Aliyah
|
|
@@ -1139,10 +1133,10 @@ function parshaToString(parsha) {
|
|
|
1139
1133
|
* @param {any} src
|
|
1140
1134
|
* @return {any}
|
|
1141
1135
|
*/
|
|
1142
|
-
|
|
1143
1136
|
function clone(src) {
|
|
1144
1137
|
return JSON.parse(JSON.stringify(src));
|
|
1145
1138
|
}
|
|
1139
|
+
|
|
1146
1140
|
/**
|
|
1147
1141
|
* Calculates the number of verses in an aliyah or haftara based on
|
|
1148
1142
|
* the `b` (begin verse), `e` (end verse) and `k` (book).
|
|
@@ -1150,100 +1144,87 @@ function clone(src) {
|
|
|
1150
1144
|
* @param {Aliyah} aliyah
|
|
1151
1145
|
* @return {number}
|
|
1152
1146
|
*/
|
|
1153
|
-
|
|
1154
1147
|
function calculateNumVerses(aliyah) {
|
|
1155
1148
|
if (aliyah.v) {
|
|
1156
1149
|
return aliyah.v;
|
|
1157
1150
|
}
|
|
1158
|
-
|
|
1159
1151
|
var chapVerseBegin = aliyah.b.split(':');
|
|
1160
1152
|
var chapVerseEnd = aliyah.e.split(':');
|
|
1161
1153
|
var c1 = parseInt(chapVerseBegin[0], 10);
|
|
1162
1154
|
var c2 = parseInt(chapVerseEnd[0], 10);
|
|
1163
1155
|
var v1 = parseInt(chapVerseBegin[1], 10);
|
|
1164
1156
|
var v2 = parseInt(chapVerseEnd[1], 10);
|
|
1165
|
-
|
|
1166
1157
|
if (c1 === c2) {
|
|
1167
1158
|
aliyah.v = v2 - v1 + 1;
|
|
1168
1159
|
} else if (typeof aliyah.k === 'string') {
|
|
1169
1160
|
var numv = numverses[aliyah.k];
|
|
1170
|
-
|
|
1171
1161
|
if (_typeof(numv) !== 'object' || !numv.length) {
|
|
1172
1162
|
throw new ReferenceError("Can't find numverses for ".concat(aliyah.k));
|
|
1173
1163
|
}
|
|
1174
|
-
|
|
1175
1164
|
var total = numv[c1] - v1 + 1;
|
|
1176
|
-
|
|
1177
1165
|
for (var chap = c1 + 1; chap < c2; chap++) {
|
|
1178
1166
|
total += numv[chap];
|
|
1179
1167
|
}
|
|
1180
|
-
|
|
1181
1168
|
total += v2;
|
|
1182
1169
|
aliyah.v = total;
|
|
1183
1170
|
}
|
|
1184
|
-
|
|
1185
1171
|
return aliyah.v;
|
|
1186
1172
|
}
|
|
1173
|
+
|
|
1187
1174
|
/**
|
|
1188
1175
|
* Formats an aliyah object like "Numbers 28:9-28:15"
|
|
1189
1176
|
* @param {Aliyah} a aliyah
|
|
1190
1177
|
* @return {string}
|
|
1191
1178
|
*/
|
|
1192
|
-
|
|
1193
1179
|
function formatAliyahWithBook(a) {
|
|
1194
1180
|
return "".concat(a.k, " ").concat(a.b, "-").concat(a.e);
|
|
1195
1181
|
}
|
|
1182
|
+
|
|
1196
1183
|
/**
|
|
1197
1184
|
* Formats an aliyah object like "Numbers 28:9-15"
|
|
1198
1185
|
* @param {Aliyah} aliyah
|
|
1199
1186
|
* @param {boolean} showBook
|
|
1200
1187
|
* @return {string}
|
|
1201
1188
|
*/
|
|
1202
|
-
|
|
1203
1189
|
function formatAliyahShort(aliyah, showBook) {
|
|
1204
1190
|
var begin = aliyah.b;
|
|
1205
1191
|
var end0 = aliyah.e;
|
|
1206
1192
|
var prefix = showBook ? aliyah.k + ' ' : '';
|
|
1207
|
-
|
|
1208
1193
|
if (begin === end0) {
|
|
1209
1194
|
return "".concat(prefix).concat(begin);
|
|
1210
1195
|
}
|
|
1211
|
-
|
|
1212
1196
|
var cv1 = begin.split(':');
|
|
1213
1197
|
var cv2 = end0.split(':');
|
|
1214
1198
|
var end = cv1[0] === cv2[0] ? cv2[1] : end0;
|
|
1215
1199
|
return "".concat(prefix).concat(begin, "-").concat(end);
|
|
1216
1200
|
}
|
|
1201
|
+
|
|
1217
1202
|
/**
|
|
1218
1203
|
* Returns the total number of verses in an array of Aliyah (or haftarah) objects
|
|
1219
1204
|
* @param {Aliyah|Aliyah[]} aliyot
|
|
1220
1205
|
* @return {number}
|
|
1221
1206
|
*/
|
|
1222
|
-
|
|
1223
1207
|
function sumVerses(aliyot) {
|
|
1224
1208
|
return Array.isArray(aliyot) ? aliyot.reduce(function (prev, cur) {
|
|
1225
1209
|
return prev + cur.v;
|
|
1226
1210
|
}, 0) : aliyot.v;
|
|
1227
1211
|
}
|
|
1212
|
+
|
|
1228
1213
|
/**
|
|
1229
1214
|
* @private
|
|
1230
1215
|
* @param {Aliyah|Aliyah[]} haft
|
|
1231
1216
|
* @return {Aliyah|Aliyah[]}
|
|
1232
1217
|
*/
|
|
1233
|
-
|
|
1234
1218
|
function cloneHaftara(haft) {
|
|
1235
1219
|
if (!haft) {
|
|
1236
1220
|
return haft;
|
|
1237
1221
|
}
|
|
1238
|
-
|
|
1239
1222
|
var dest = clone(haft);
|
|
1240
|
-
|
|
1241
1223
|
if (Array.isArray(dest)) {
|
|
1242
1224
|
dest.map(calculateNumVerses);
|
|
1243
1225
|
} else {
|
|
1244
1226
|
calculateNumVerses(dest);
|
|
1245
1227
|
}
|
|
1246
|
-
|
|
1247
1228
|
return dest;
|
|
1248
1229
|
}
|
|
1249
1230
|
|
|
@@ -1253,7 +1234,6 @@ function cloneHaftara(haft) {
|
|
|
1253
1234
|
* @param {string} b
|
|
1254
1235
|
* @return {boolean}
|
|
1255
1236
|
*/
|
|
1256
|
-
|
|
1257
1237
|
function isChapVerseBefore(a, b) {
|
|
1258
1238
|
var cv1 = a.split(':').map(function (x) {
|
|
1259
1239
|
return +x;
|
|
@@ -1263,14 +1243,13 @@ function isChapVerseBefore(a, b) {
|
|
|
1263
1243
|
});
|
|
1264
1244
|
return cv1[0] * 100 + cv1[1] < cv2[0] * 100 + cv2[1];
|
|
1265
1245
|
}
|
|
1246
|
+
|
|
1266
1247
|
/**
|
|
1267
1248
|
* Summarizes an `AliyotMap` by collapsing all adjacent aliyot.
|
|
1268
1249
|
* Finds any non-overlapping parts (e.g. special 7th aliyah or maftir)
|
|
1269
1250
|
* @param {Object<string,Aliyah>} aliyot
|
|
1270
1251
|
* @return {Aliyah[]}
|
|
1271
1252
|
*/
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
1253
|
function makeLeyningParts(aliyot) {
|
|
1275
1254
|
var nums = Object.keys(aliyot).filter(function (x) {
|
|
1276
1255
|
return x.length === 1;
|
|
@@ -1278,20 +1257,16 @@ function makeLeyningParts(aliyot) {
|
|
|
1278
1257
|
var start = aliyot[nums[0]];
|
|
1279
1258
|
var end = start;
|
|
1280
1259
|
var parts = [];
|
|
1281
|
-
|
|
1282
1260
|
for (var i = 0; i < nums.length; i++) {
|
|
1283
1261
|
var num = nums[i];
|
|
1284
1262
|
var aliyah = aliyot[num];
|
|
1285
|
-
|
|
1286
1263
|
if (i === nums.length - 1 && aliyah.k === end.k && aliyah.e === end.e) {
|
|
1287
1264
|
// short-circuit when final aliyah is within the previous (e.g. M inside of 7)
|
|
1288
1265
|
continue;
|
|
1289
1266
|
}
|
|
1290
|
-
|
|
1291
1267
|
var prevEndChap = +end.e.split(':')[0];
|
|
1292
1268
|
var curStartChap = +aliyah.b.split(':')[0];
|
|
1293
1269
|
var sameOrNextChap = curStartChap === prevEndChap || curStartChap === prevEndChap + 1;
|
|
1294
|
-
|
|
1295
1270
|
if (i !== 0 && (aliyah.k !== start.k || isChapVerseBefore(aliyah.b, start.e) || !sameOrNextChap)) {
|
|
1296
1271
|
parts.push({
|
|
1297
1272
|
k: start.k,
|
|
@@ -1300,10 +1275,8 @@ function makeLeyningParts(aliyot) {
|
|
|
1300
1275
|
});
|
|
1301
1276
|
start = aliyah;
|
|
1302
1277
|
}
|
|
1303
|
-
|
|
1304
1278
|
end = aliyah;
|
|
1305
1279
|
}
|
|
1306
|
-
|
|
1307
1280
|
parts.push({
|
|
1308
1281
|
k: start.k,
|
|
1309
1282
|
b: start.b,
|
|
@@ -1311,6 +1284,7 @@ function makeLeyningParts(aliyot) {
|
|
|
1311
1284
|
});
|
|
1312
1285
|
return parts;
|
|
1313
1286
|
}
|
|
1287
|
+
|
|
1314
1288
|
/**
|
|
1315
1289
|
* Returns a string representation of the leyning parts.
|
|
1316
1290
|
* Separate verse ranges read from the same book are separated
|
|
@@ -1320,36 +1294,30 @@ function makeLeyningParts(aliyot) {
|
|
|
1320
1294
|
* @param {Aliyah|Aliyah[]} parts
|
|
1321
1295
|
* @return {string}
|
|
1322
1296
|
*/
|
|
1323
|
-
|
|
1324
1297
|
function makeSummaryFromParts(parts) {
|
|
1325
1298
|
if (!Array.isArray(parts)) {
|
|
1326
1299
|
parts = [parts];
|
|
1327
1300
|
}
|
|
1328
|
-
|
|
1329
1301
|
var prev = parts[0];
|
|
1330
1302
|
var summary = formatAliyahShort(prev, true);
|
|
1331
|
-
|
|
1332
1303
|
for (var i = 1; i < parts.length; i++) {
|
|
1333
1304
|
var part = parts[i];
|
|
1334
|
-
|
|
1335
1305
|
if (part.k === prev.k) {
|
|
1336
1306
|
summary += ', ';
|
|
1337
1307
|
} else {
|
|
1338
1308
|
summary += "; ".concat(part.k, " ");
|
|
1339
1309
|
}
|
|
1340
|
-
|
|
1341
1310
|
summary += formatAliyahShort(part, false);
|
|
1342
1311
|
prev = part;
|
|
1343
1312
|
}
|
|
1344
|
-
|
|
1345
1313
|
return summary;
|
|
1346
1314
|
}
|
|
1315
|
+
|
|
1347
1316
|
/**
|
|
1348
1317
|
* Makes a summary of the leyning, like "Genesis 6:9-11:32"
|
|
1349
1318
|
* @param {Object<string,Aliyah>} aliyot
|
|
1350
1319
|
* @return {string}
|
|
1351
1320
|
*/
|
|
1352
|
-
|
|
1353
1321
|
function makeLeyningSummary(aliyot) {
|
|
1354
1322
|
var parts = makeLeyningParts(aliyot);
|
|
1355
1323
|
return makeSummaryFromParts(parts);
|
|
@@ -1413,42 +1381,35 @@ $({ target: 'Object', stat: true }, {
|
|
|
1413
1381
|
}
|
|
1414
1382
|
});
|
|
1415
1383
|
|
|
1416
|
-
var Purim={fullkriyah:{"1":{p:16,k:2,b:"17:8",e:"17:10"},"2":{p:16,k:2,b:"17:11",e:"17:13"},"3":{p:16,k:2,b:"17:14",e:"17:16"}}};var festivals = {"Pesach I":{haft:{k:"Joshua",b:"5:2",e:"6:1"},fullkriyah:{"1":{p:15,k:2,b:"12:21",e:"12:24"},"2":{p:15,k:2,b:"12:25",e:"12:28"},"3":{p:15,k:2,b:"12:29",e:"12:36"},"4":{p:15,k:2,b:"12:37",e:"12:42"},"5":{p:15,k:2,b:"12:43",e:"12:51"},M:{p:41,k:4,b:"28:16",e:"28:25"}}},"Pesach I (on Shabbat)":{haft:{k:"Joshua",b:"5:2",e:"6:1"},fullkriyah:{"1":{p:15,k:2,b:"12:21",e:"12:24"},"2":{p:15,k:2,b:"12:25",e:"12:28"},"3":{p:15,k:2,b:"12:29",e:"12:32"},"4":{p:15,k:2,b:"12:33",e:"12:36"},"5":{p:15,k:2,b:"12:37",e:"12:42"},"6":{p:15,k:2,b:"12:43",e:"12:47"},"7":{p:15,k:2,b:"12:48",e:"12:51"},M:{p:41,k:4,b:"28:16",e:"28:25"}}},"Pesach II":{haft:[{k:"II Kings",b:"23:1",e:"23:9"},{k:"II Kings",b:"23:21",e:"23:25"}],fullkriyah:{"1":{p:31,k:3,b:"22:26",e:"23:3"},"2":{p:31,k:3,b:"23:4",e:"23:14"},"3":{p:31,k:3,b:"23:15",e:"23:22"},"4":{p:31,k:3,b:"23:23",e:"23:32"},"5":{p:31,k:3,b:"23:33",e:"23:44"},M:{p:41,k:4,b:"28:16",e:"28:25"}}},"Pesach II (CH''M)":{note:"Israel only - according to Vaani T'fillati Siddur Yisraeli",fullkriyah:{"1":{p:31,k:3,b:"22:26",e:"23:8"},"2":{p:31,k:3,b:"23:9",e:"23:14"},"3":{p:31,k:3,b:"23:15",e:"23:44"},"4":{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach Chol ha-Moed Day 1":{fullkriyah:{"1":{p:15,k:2,b:"13:1",e:"13:4"},"2":{p:15,k:2,b:"13:5",e:"13:10"},"3":{p:15,k:2,b:"13:11",e:"13:16"},"4":{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach Chol ha-Moed Day 2":{fullkriyah:{"1":{p:18,k:2,b:"22:24",e:"22:26"},"2":{p:18,k:2,b:"22:27",e:"23:5"},"3":{p:18,k:2,b:"23:6",e:"23:19"},"4":{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach Chol ha-Moed Day 3":{fullkriyah:{"1":{p:21,k:2,b:"34:1",e:"34:10"},"2":{p:21,k:2,b:"34:11",e:"34:17"},"3":{p:21,k:2,b:"34:18",e:"34:26"},"4":{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach Chol ha-Moed Day 4":{fullkriyah:{"1":{p:36,k:4,b:"9:1",e:"9:5"},"2":{p:36,k:4,b:"9:6",e:"9:8"},"3":{p:36,k:4,b:"9:9",e:"9:14"},"4":{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach Shabbat Chol ha-Moed":{haft:{k:"Ezekiel",b:"37:1",e:"37:14"},fullkriyah:{"1":{p:21,k:2,b:"33:12",e:"33:16"},"2":{p:21,k:2,b:"33:17",e:"33:19"},"3":{p:21,k:2,b:"33:20",e:"33:23"},"4":{p:21,k:2,b:"34:1",e:"34:3"},"5":{p:21,k:2,b:"34:4",e:"34:10"},"6":{p:21,k:2,b:"34:11",e:"34:17"},"7":{p:21,k:2,b:"34:18",e:"34:26"},M:{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach VII":{haft:{k:"II Samuel",b:"22:1",e:"22:51"},fullkriyah:{"1":{p:16,k:2,b:"13:17",e:"13:22"},"2":{p:16,k:2,b:"14:1",e:"14:8"},"3":{p:16,k:2,b:"14:9",e:"14:14"},"4":{p:16,k:2,b:"14:15",e:"14:25"},"5":{p:16,k:2,b:"14:26",e:"15:26"},M:{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach VII (on Shabbat)":{haft:{k:"II Samuel",b:"22:1",e:"22:51"},fullkriyah:{"1":{p:16,k:2,b:"13:17",e:"13:19"},"2":{p:16,k:2,b:"13:20",e:"13:22"},"3":{p:16,k:2,b:"14:1",e:"14:4"},"4":{p:16,k:2,b:"14:5",e:"14:8"},"5":{p:16,k:2,b:"14:9",e:"14:14"},"6":{p:16,k:2,b:"14:15",e:"14:25"},"7":{p:16,k:2,b:"14:26",e:"15:26"},M:{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach VIII":{haft:{k:"Isaiah",b:"10:32",e:"12:6"},fullkriyah:{"1":{p:47,k:5,b:"15:19",e:"15:23"},"2":{p:47,k:5,b:"16:1",e:"16:3"},"3":{p:47,k:5,b:"16:4",e:"16:8"},"4":{p:47,k:5,b:"16:9",e:"16:12"},"5":{p:47,k:5,b:"16:13",e:"16:17"},M:{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach VIII (on Shabbat)":{haft:{k:"Isaiah",b:"10:32",e:"12:6"},fullkriyah:{"1":{p:47,k:5,b:"14:22",e:"14:29"},"2":{p:47,k:5,b:"15:1",e:"15:18"},"3":{p:47,k:5,b:"15:19",e:"15:23"},"4":{p:47,k:5,b:"16:1",e:"16:3"},"5":{p:47,k:5,b:"16:4",e:"16:8"},"6":{p:47,k:5,b:"16:9",e:"16:12"},"7":{p:47,k:5,b:"16:13",e:"16:17"},M:{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach III (CH''M)":{alias:true,il:true,key:"Pesach Chol ha-Moed Day 1"},"Pesach IV (CH''M)":{alias:true,il:true,key:"Pesach Chol ha-Moed Day 2"},"Pesach V (CH''M)":{alias:true,il:true,key:"Pesach Chol ha-Moed Day 3"},"Pesach VI (CH''M)":{alias:true,il:true,key:"Pesach Chol ha-Moed Day 4"},"Shavuot I":{haft:[{k:"Ezekiel",b:"1:1",e:"1:28"},{k:"Ezekiel",b:"3:12",e:"3:12"}],fullkriyah:{"1":{p:17,k:2,b:"19:1",e:"19:6"},"2":{p:17,k:2,b:"19:7",e:"19:13"},"3":{p:17,k:2,b:"19:14",e:"19:19"},"4":{p:17,k:2,b:"19:20",e:"20:14"},"5":{p:17,k:2,b:"20:15",e:"20:23"},M:{p:41,k:4,b:"28:26",e:"28:31"}}},"Shavuot II":{haft:{k:"Habakkuk",b:"3:1",e:"3:19"},fullkriyah:{"1":{p:47,k:5,b:"15:19",e:"15:23"},"2":{p:47,k:5,b:"16:1",e:"16:3"},"3":{p:47,k:5,b:"16:4",e:"16:8"},"4":{p:47,k:5,b:"16:9",e:"16:12"},"5":{p:47,k:5,b:"16:13",e:"16:17"},M:{p:41,k:4,b:"28:26",e:"28:31"}}},"Shavuot II (on Shabbat)":{haft:{k:"Habakkuk",b:"3:1",e:"3:19"},fullkriyah:{"1":{p:47,k:5,b:"14:22",e:"14:29"},"2":{p:47,k:5,b:"15:1",e:"15:18"},"3":{p:47,k:5,b:"15:19",e:"15:23"},"4":{p:47,k:5,b:"16:1",e:"16:3"},"5":{p:47,k:5,b:"16:4",e:"16:8"},"6":{p:47,k:5,b:"16:9",e:"16:12"},"7":{p:47,k:5,b:"16:13",e:"16:17"},M:{p:41,k:4,b:"28:26",e:"28:31"}}},"Fast Day (Morning)":{fullkriyah:{"1":{p:21,k:2,b:"32:11",e:"32:14"},"2":{p:21,k:2,b:"34:1",e:"34:3"},"3":{p:21,k:2,b:"34:4",e:"34:10"}}},"Fast Day (Afternoon)":{haft:{k:"Isaiah",b:"55:6",e:"56:8"},fullkriyah:{"1":{p:21,k:2,b:"32:11",e:"32:14"},"2":{p:21,k:2,b:"34:1",e:"34:3"},"3":{p:21,k:2,b:"34:4",e:"34:10"}}},"Asara B'Tevet":{alias:true,key:"Fast Day (Morning)"},"Ta'anit Bechorot":{alias:true,key:"Fast Day (Morning)"},"Ta'anit Esther":{alias:true,key:"Fast Day (Morning)"},"Tzom Gedaliah":{alias:true,key:"Fast Day (Morning)"},"Tzom Tammuz":{alias:true,key:"Fast Day (Morning)"},"Asara B'Tevet (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Ta'anit Bechorot (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Ta'anit Esther (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Tzom Gedaliah (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Tzom Tammuz (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Tish'a B'Av":{haft:{k:"Jeremiah",b:"8:13",e:"9:23"},fullkriyah:{"1":{p:45,k:5,b:"4:25",e:"4:29"},"2":{p:45,k:5,b:"4:30",e:"4:35"},"3":{p:45,k:5,b:"4:36",e:"4:40"}}},"Tish'a B'Av (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Rosh Hashana I":{haft:{k:"I Samuel",b:"1:1",e:"2:10"},fullkriyah:{"1":{p:4,k:1,b:"21:1",e:"21:4"},"2":{p:4,k:1,b:"21:5",e:"21:12"},"3":{p:4,k:1,b:"21:13",e:"21:21"},"4":{p:4,k:1,b:"21:22",e:"21:27"},"5":{p:4,k:1,b:"21:28",e:"21:34"},M:{p:41,k:4,b:"29:1",e:"29:6"}}},"Rosh Hashana I (on Shabbat)":{haft:{k:"I Samuel",b:"1:1",e:"2:10"},fullkriyah:{"1":{p:4,k:1,b:"21:1",e:"21:4"},"2":{p:4,k:1,b:"21:5",e:"21:8"},"3":{p:4,k:1,b:"21:9",e:"21:12"},"4":{p:4,k:1,b:"21:13",e:"21:17"},"5":{p:4,k:1,b:"21:18",e:"21:21"},"6":{p:4,k:1,b:"21:22",e:"21:27"},"7":{p:4,k:1,b:"21:28",e:"21:34"},M:{p:41,k:4,b:"29:1",e:"29:6"}}},"Rosh Hashana II":{haft:{k:"Jeremiah",b:"31:1",e:"31:19"},fullkriyah:{"1":{p:4,k:1,b:"22:1",e:"22:3"},"2":{p:4,k:1,b:"22:4",e:"22:8"},"3":{p:4,k:1,b:"22:9",e:"22:14"},"4":{p:4,k:1,b:"22:15",e:"22:19"},"5":{p:4,k:1,b:"22:20",e:"22:24"},M:{p:41,k:4,b:"29:1",e:"29:6"}}},"Yom Kippur":{haft:{k:"Isaiah",b:"57:14",e:"58:14"},fullkriyah:{"1":{p:29,k:3,b:"16:1",e:"16:6"},"2":{p:29,k:3,b:"16:7",e:"16:11"},"3":{p:29,k:3,b:"16:12",e:"16:17"},"4":{p:29,k:3,b:"16:18",e:"16:24"},"5":{p:29,k:3,b:"16:25",e:"16:30"},"6":{p:29,k:3,b:"16:31",e:"16:34"},M:{p:41,k:4,b:"29:7",e:"29:11"}}},"Yom Kippur (on Shabbat)":{haft:{k:"Isaiah",b:"57:14",e:"58:14"},fullkriyah:{"1":{p:29,k:3,b:"16:1",e:"16:3"},"2":{p:29,k:3,b:"16:4",e:"16:6"},"3":{p:29,k:3,b:"16:7",e:"16:11"},"4":{p:29,k:3,b:"16:12",e:"16:17"},"5":{p:29,k:3,b:"16:18",e:"16:24"},"6":{p:29,k:3,b:"16:25",e:"16:30"},"7":{p:29,k:3,b:"16:31",e:"16:34"},M:{p:41,k:4,b:"29:7",e:"29:11"}}},"Yom Kippur (Mincha)":{alias:true,key:"Yom Kippur (Mincha, Traditional)"},"Yom Kippur (Mincha, Traditional)":{haft:[{k:"Jonah",b:"1:1",e:"4:11"},{k:"Micah",b:"7:18",e:"7:20"}],fullkriyah:{"1":{p:29,k:3,b:"18:1",e:"18:5"},"2":{p:29,k:3,b:"18:6",e:"18:21"},"3":{p:29,k:3,b:"18:22",e:"18:30"}}},"Yom Kippur (Mincha, Alternate)":{haft:[{k:"Jonah",b:"1:1",e:"4:11"},{k:"Micah",b:"7:18",e:"7:20"}],fullkriyah:{"1":{p:30,k:3,b:"19:1",e:"19:4"},"2":{p:30,k:3,b:"19:5",e:"19:10"},"3":{p:30,k:3,b:"19:11",e:"19:18"}}},"Sukkot I":{haft:{k:"Zechariah",b:"14:1",e:"14:21"},fullkriyah:{"1":{p:31,k:3,b:"22:26",e:"23:3"},"2":{p:31,k:3,b:"23:4",e:"23:14"},"3":{p:31,k:3,b:"23:15",e:"23:22"},"4":{p:31,k:3,b:"23:23",e:"23:32"},"5":{p:31,k:3,b:"23:33",e:"23:44"},M:{p:41,k:4,b:"29:12",e:"29:16"}}},"Sukkot I (on Shabbat)":{haft:{k:"Zechariah",b:"14:1",e:"14:21"},fullkriyah:{"1":{p:31,k:3,b:"22:26",e:"22:33"},"2":{p:31,k:3,b:"23:1",e:"23:3"},"3":{p:31,k:3,b:"23:4",e:"23:8"},"4":{p:31,k:3,b:"23:9",e:"23:14"},"5":{p:31,k:3,b:"23:15",e:"23:22"},"6":{p:31,k:3,b:"23:23",e:"23:32"},"7":{p:31,k:3,b:"23:33",e:"23:44"},M:{p:41,k:4,b:"29:12",e:"29:16"}}},"Sukkot II":{haft:{k:"I Kings",b:"8:2",e:"8:21"},fullkriyah:{"1":{p:31,k:3,b:"22:26",e:"23:3"},"2":{p:31,k:3,b:"23:4",e:"23:14"},"3":{p:31,k:3,b:"23:15",e:"23:22"},"4":{p:31,k:3,b:"23:23",e:"23:32"},"5":{p:31,k:3,b:"23:33",e:"23:44"},M:{p:41,k:4,b:"29:12",e:"29:16"}}},"Sukkot Chol ha-Moed Day 1":{fullkriyah:{"1":{p:41,k:4,b:"29:17",e:"29:19"},"2":{p:41,k:4,b:"29:20",e:"29:22"},"3":{p:41,k:4,b:"29:23",e:"29:25"},"4":{p:41,k:4,b:"29:17",e:"29:22"}}},"Sukkot Chol ha-Moed Day 2":{fullkriyah:{"1":{p:41,k:4,b:"29:20",e:"29:22"},"2":{p:41,k:4,b:"29:23",e:"29:25"},"3":{p:41,k:4,b:"29:26",e:"29:28"},"4":{p:41,k:4,b:"29:20",e:"29:25"}}},"Sukkot Chol ha-Moed Day 3":{fullkriyah:{"1":{p:41,k:4,b:"29:23",e:"29:25"},"2":{p:41,k:4,b:"29:26",e:"29:28"},"3":{p:41,k:4,b:"29:29",e:"29:31"},"4":{p:41,k:4,b:"29:23",e:"29:28"}}},"Sukkot Chol ha-Moed Day 4":{fullkriyah:{"1":{p:41,k:4,b:"29:26",e:"29:28"},"2":{p:41,k:4,b:"29:29",e:"29:31"},"3":{p:41,k:4,b:"29:32",e:"29:34"},"4":{p:41,k:4,b:"29:26",e:"29:31"}}},"Sukkot Chol ha-Moed Day 5":{fullkriyah:{"1":{p:41,k:4,b:"29:29",e:"29:31"},"2":{p:41,k:4,b:"29:32",e:"29:34"},"3":{p:41,k:4,b:"29:35",e:"29:37"},"4":{p:41,k:4,b:"29:29",e:"29:34"}}},"Sukkot Shabbat Chol ha-Moed":{haft:{k:"Ezekiel",b:"38:18",e:"39:16"},fullkriyah:{"1":{p:21,k:2,b:"33:12",e:"33:16"},"2":{p:21,k:2,b:"33:17",e:"33:19"},"3":{p:21,k:2,b:"33:20",e:"33:23"},"4":{p:21,k:2,b:"34:1",e:"34:3"},"5":{p:21,k:2,b:"34:4",e:"34:10"},"6":{p:21,k:2,b:"34:11",e:"34:17"},"7":{p:21,k:2,b:"34:18",e:"34:26"},"M-day1":{p:41,k:4,b:"29:17",e:"29:22"},"M-day2":{p:41,k:4,b:"29:20",e:"29:25"},"M-day3":{p:41,k:4,b:"29:23",e:"29:28"},"M-day4":{p:41,k:4,b:"29:26",e:"29:31"},"M-day5":{p:41,k:4,b:"29:29",e:"29:34"}}},"Sukkot Final Day (Hoshana Raba)":{fullkriyah:{"1":{p:41,k:4,b:"29:26",e:"29:28"},"2":{p:41,k:4,b:"29:29",e:"29:31"},"3":{p:41,k:4,b:"29:32",e:"29:34"},"4":{p:41,k:4,b:"29:29",e:"29:34"}}},"Shmini Atzeret":{haft:{k:"I Kings",b:"8:54",e:"8:66"},fullkriyah:{"1":{p:47,k:5,b:"14:22",e:"14:29"},"2":{p:47,k:5,b:"15:1",e:"15:18"},"3":{p:47,k:5,b:"15:19",e:"16:3"},"4":{p:47,k:5,b:"16:4",e:"16:8"},"5":{p:47,k:5,b:"16:9",e:"16:17"},M:{p:41,k:4,b:"29:35",e:"30:1"}}},"Shmini Atzeret (on Shabbat)":{haft:{k:"I Kings",b:"8:54",e:"8:66"},fullkriyah:{"1":{p:47,k:5,b:"14:22",e:"14:29"},"2":{p:47,k:5,b:"15:1",e:"15:18"},"3":{p:47,k:5,b:"15:19",e:"15:23"},"4":{p:47,k:5,b:"16:1",e:"16:3"},"5":{p:47,k:5,b:"16:4",e:"16:8"},"6":{p:47,k:5,b:"16:9",e:"16:12"},"7":{p:47,k:5,b:"16:13",e:"16:17"},M:{p:41,k:4,b:"29:35",e:"30:1"}}},"Erev Simchat Torah":{fullkriyah:{"1":{p:54,k:5,b:"33:1",e:"33:7"},"2":{p:54,k:5,b:"33:8",e:"33:12"},"3":{p:54,k:5,b:"33:13",e:"33:17"},"4":{p:54,k:5,b:"33:18",e:"33:21"},"5":{p:54,k:5,b:"33:22",e:"33:26"}}},"Simchat Torah":{haft:{k:"Joshua",b:"1:1",e:"1:18"},fullkriyah:{"1":{p:54,k:5,b:"33:1",e:"33:7"},"2":{p:54,k:5,b:"33:8",e:"33:12"},"3":{p:54,k:5,b:"33:13",e:"33:17"},"4":{p:54,k:5,b:"33:18",e:"33:21"},"5":{p:54,k:5,b:"33:22",e:"33:26"},"6":{p:54,k:5,b:"33:27",e:"34:12"},"7":{p:1,k:1,b:"1:1",e:"2:3"},M:{p:41,k:4,b:"29:35",e:"30:1"}}},"Shabbat Rosh Chodesh Chanukah":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{"7":{p:41,k:4,b:"28:9",e:"28:15"},M:{p:35,k:4,b:"7:42",e:"7:47"}}},"Chanukah Day 1":{fullkriyah:{"1":{p:35,k:4,b:"7:1",e:"7:11"},"2":{p:35,k:4,b:"7:12",e:"7:14"},"3":{p:35,k:4,b:"7:15",e:"7:17"}},alt:{"1":{p:35,k:4,b:"7:1",e:"7:3"},"2":{p:35,k:4,b:"7:4",e:"7:11"},"3":{p:35,k:4,b:"7:12",e:"7:17"}}},"Chanukah Day 1 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:1",e:"7:17"}}},"Chanukah Day 2":{fullkriyah:{"1":{p:35,k:4,b:"7:18",e:"7:20"},"2":{p:35,k:4,b:"7:21",e:"7:23"},"3":{p:35,k:4,b:"7:24",e:"7:29"}},alt:{"1":{p:35,k:4,b:"7:18",e:"7:20"},"2":{p:35,k:4,b:"7:21",e:"7:23"},"3":{p:35,k:4,b:"7:18",e:"7:23"}}},"Chanukah Day 2 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:18",e:"7:23"}}},"Chanukah Day 3":{fullkriyah:{"1":{p:35,k:4,b:"7:24",e:"7:26"},"2":{p:35,k:4,b:"7:27",e:"7:29"},"3":{p:35,k:4,b:"7:30",e:"7:35"}},alt:{"1":{p:35,k:4,b:"7:24",e:"7:26"},"2":{p:35,k:4,b:"7:27",e:"7:29"},"3":{p:35,k:4,b:"7:24",e:"7:29"}}},"Chanukah Day 3 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:24",e:"7:29"}}},"Chanukah Day 4":{fullkriyah:{"1":{p:35,k:4,b:"7:30",e:"7:32"},"2":{p:35,k:4,b:"7:33",e:"7:35"},"3":{p:35,k:4,b:"7:36",e:"7:41"}},alt:{"1":{p:35,k:4,b:"7:30",e:"7:32"},"2":{p:35,k:4,b:"7:33",e:"7:35"},"3":{p:35,k:4,b:"7:30",e:"7:35"}}},"Chanukah Day 4 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:30",e:"7:35"}}},"Chanukah Day 5":{fullkriyah:{"1":{p:35,k:4,b:"7:36",e:"7:38"},"2":{p:35,k:4,b:"7:39",e:"7:41"},"3":{p:35,k:4,b:"7:42",e:"7:47"}},alt:{"1":{p:35,k:4,b:"7:36",e:"7:38"},"2":{p:35,k:4,b:"7:39",e:"7:41"},"3":{p:35,k:4,b:"7:36",e:"7:41"}}},"Chanukah Day 5 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:36",e:"7:41"}}},"Chanukah Day 6":{fullkriyah:{"1":{p:41,k:4,b:"28:1",e:"28:5"},"2":{p:41,k:4,b:"28:6",e:"28:10"},"3":{p:41,k:4,b:"28:11",e:"28:15"},"4":{p:35,k:4,b:"7:42",e:"7:47"}}},"Chanukah Day 7":{fullkriyah:{"1":{p:35,k:4,b:"7:48",e:"7:50"},"2":{p:35,k:4,b:"7:51",e:"7:53"},"3":{p:35,k:4,b:"7:54",e:"7:59"}},alt:{"1":{p:35,k:4,b:"7:48",e:"7:50"},"2":{p:35,k:4,b:"7:51",e:"7:53"},"3":{p:35,k:4,b:"7:48",e:"7:53"}}},"Chanukah Day 7 (on Rosh Chodesh)":{fullkriyah:{"1":{p:41,k:4,b:"28:1",e:"28:5"},"2":{p:41,k:4,b:"28:6",e:"28:10"},"3":{p:41,k:4,b:"28:11",e:"28:15"},"4":{p:35,k:4,b:"7:48",e:"7:53"}}},"Chanukah Day 7 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:48",e:"7:53"}}},"Chanukah Day 8":{fullkriyah:{"1":{p:35,k:4,b:"7:54",e:"7:56"},"2":{p:35,k:4,b:"7:57",e:"7:59"},"3":{p:35,k:4,b:"7:60",e:"8:4"}}},"Chanukah Day 8 (on Shabbat)":{haft:{k:"I Kings",b:"7:40",e:"7:50"},fullkriyah:{M:{p:35,k:4,b:"7:54",e:"8:4"}}},Purim:Purim,"Shushan Purim":{fullkriyah:{"1":{p:16,k:2,b:"17:8",e:"17:10"},"2":{p:16,k:2,b:"17:11",e:"17:13"},"3":{p:16,k:2,b:"17:14",e:"17:16"}}},"Shushan Purim (on Shabbat)":{note:"Jerusalem & walled cities only: special maftir Exodus 17:8-16, same Haftara as Shabbat Zachor"},"Shabbat HaChodesh":{haft:{k:"Ezekiel",b:"45:16",e:"46:18"},fullkriyah:{M:{p:15,k:2,b:"12:1",e:"12:20"}}},"Shabbat HaChodesh (on Rosh Chodesh)":{haft:{k:"Ezekiel",b:"45:16",e:"46:18"},fullkriyah:{"7":{p:41,k:4,b:"28:9",e:"28:15"},M:{p:15,k:2,b:"12:1",e:"12:20"}}},"Shabbat HaGadol":{haft:{k:"Malachi",b:"3:4",e:"3:24"}},"Shabbat Parah":{haft:{k:"Ezekiel",b:"36:16",e:"36:38"},fullkriyah:{M:{p:39,k:4,b:"19:1",e:"19:22"}}},"Shabbat Shekalim":{haft:{k:"II Kings",b:"12:1",e:"12:17"},fullkriyah:{M:{p:21,k:2,b:"30:11",e:"30:16"}}},"Shabbat Shekalim (on Rosh Chodesh)":{haft:{k:"II Kings",b:"12:1",e:"12:17"},fullkriyah:{"7":{p:41,k:4,b:"28:9",e:"28:15"},M:{p:21,k:2,b:"30:11",e:"30:16"}}},"Shabbat Shuva (with Vayeilech)":{haft:[{k:"Hosea",b:"14:2",e:"14:10"},{k:"Micah",b:"7:18",e:"7:20"}]},"Shabbat Shuva (with Ha'Azinu)":{haft:[{k:"Hosea",b:"14:2",e:"14:10"},{k:"Joel",b:"2:15",e:"2:27"}],seph:[{k:"Hosea",b:"14:2",e:"14:10"},{k:"Micah",b:"7:18",e:"7:20"}]},"Shabbat Shuva":{haft:[{k:"Hosea",b:"14:2",e:"14:10"},{k:"Micah",b:"7:18",e:"7:20"},{k:"Joel",b:"2:15",e:"2:27"}]},"Shabbat Zachor":{haft:{k:"I Samuel",b:"15:2",e:"15:34"},fullkriyah:{M:{p:49,k:5,b:"25:17",e:"25:19"}}},"Pinchas occurring after 17 Tammuz":{haft:{k:"Jeremiah",b:"1:1",e:"2:3"}},"Masei on Shabbat Rosh Chodesh":{haft:[{k:"Jeremiah",b:"2:4",e:"2:28"},{k:"Jeremiah",b:"3:4",e:"3:4"},{k:"Isaiah",b:"66:1",e:"66:1"},{k:"Isaiah",b:"66:23",e:"66:23"}]},"Matot-Masei on Shabbat Rosh Chodesh":{alias:true,key:"Masei on Shabbat Rosh Chodesh"},"Rosh Chodesh":{fullkriyah:{"1":{p:41,k:4,b:"28:1",e:"28:3"},"2":{p:41,k:4,b:"28:3",e:"28:5"},"3":{p:41,k:4,b:"28:6",e:"28:10"},"4":{p:41,k:4,b:"28:11",e:"28:15"}}},"Rosh Chodesh Nisan":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Iyyar":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Sivan":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Tamuz":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Av":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Elul":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Tishrei":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Cheshvan":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Kislev":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Sh'vat":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Adar":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Adar I":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Adar II":{alias:true,key:"Rosh Chodesh"},"Shabbat Rosh Chodesh":{haft:{k:"Isaiah",b:"66:1",e:"66:24"},fullkriyah:{M:{p:41,k:4,b:"28:9",e:"28:15"}}},"Shabbat Machar Chodesh":{haft:{k:"I Samuel",b:"20:18",e:"20:42"}}};
|
|
1384
|
+
var Purim={fullkriyah:{"1":{p:16,k:2,b:"17:8",e:"17:10"},"2":{p:16,k:2,b:"17:11",e:"17:13"},"3":{p:16,k:2,b:"17:14",e:"17:16"}}};var festivals = {"Pesach I":{haft:{k:"Joshua",b:"5:2",e:"6:1"},fullkriyah:{"1":{p:15,k:2,b:"12:21",e:"12:24"},"2":{p:15,k:2,b:"12:25",e:"12:28"},"3":{p:15,k:2,b:"12:29",e:"12:36"},"4":{p:15,k:2,b:"12:37",e:"12:42"},"5":{p:15,k:2,b:"12:43",e:"12:51"},M:{p:41,k:4,b:"28:16",e:"28:25"}}},"Pesach I (on Shabbat)":{haft:{k:"Joshua",b:"5:2",e:"6:1"},fullkriyah:{"1":{p:15,k:2,b:"12:21",e:"12:24"},"2":{p:15,k:2,b:"12:25",e:"12:28"},"3":{p:15,k:2,b:"12:29",e:"12:32"},"4":{p:15,k:2,b:"12:33",e:"12:36"},"5":{p:15,k:2,b:"12:37",e:"12:42"},"6":{p:15,k:2,b:"12:43",e:"12:47"},"7":{p:15,k:2,b:"12:48",e:"12:51"},M:{p:41,k:4,b:"28:16",e:"28:25"}}},"Pesach II":{haft:[{k:"II Kings",b:"23:1",e:"23:9"},{k:"II Kings",b:"23:21",e:"23:25"}],fullkriyah:{"1":{p:31,k:3,b:"22:26",e:"23:3"},"2":{p:31,k:3,b:"23:4",e:"23:14"},"3":{p:31,k:3,b:"23:15",e:"23:22"},"4":{p:31,k:3,b:"23:23",e:"23:32"},"5":{p:31,k:3,b:"23:33",e:"23:44"},M:{p:41,k:4,b:"28:16",e:"28:25"}}},"Pesach II (CH''M)":{note:"Israel only - according to Vaani T'fillati Siddur Yisraeli",fullkriyah:{"1":{p:31,k:3,b:"22:26",e:"23:8"},"2":{p:31,k:3,b:"23:9",e:"23:14"},"3":{p:31,k:3,b:"23:15",e:"23:44"},"4":{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach Chol ha-Moed Day 1":{fullkriyah:{"1":{p:15,k:2,b:"13:1",e:"13:4"},"2":{p:15,k:2,b:"13:5",e:"13:10"},"3":{p:15,k:2,b:"13:11",e:"13:16"},"4":{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach Chol ha-Moed Day 2":{fullkriyah:{"1":{p:18,k:2,b:"22:24",e:"22:26"},"2":{p:18,k:2,b:"22:27",e:"23:5"},"3":{p:18,k:2,b:"23:6",e:"23:19"},"4":{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach Chol ha-Moed Day 3":{fullkriyah:{"1":{p:21,k:2,b:"34:1",e:"34:10"},"2":{p:21,k:2,b:"34:11",e:"34:17"},"3":{p:21,k:2,b:"34:18",e:"34:26"},"4":{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach Chol ha-Moed Day 4":{fullkriyah:{"1":{p:36,k:4,b:"9:1",e:"9:5"},"2":{p:36,k:4,b:"9:6",e:"9:8"},"3":{p:36,k:4,b:"9:9",e:"9:14"},"4":{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach Shabbat Chol ha-Moed":{haft:{k:"Ezekiel",b:"37:1",e:"37:14"},fullkriyah:{"1":{p:21,k:2,b:"33:12",e:"33:16"},"2":{p:21,k:2,b:"33:17",e:"33:19"},"3":{p:21,k:2,b:"33:20",e:"33:23"},"4":{p:21,k:2,b:"34:1",e:"34:3"},"5":{p:21,k:2,b:"34:4",e:"34:10"},"6":{p:21,k:2,b:"34:11",e:"34:17"},"7":{p:21,k:2,b:"34:18",e:"34:26"},M:{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach VII":{haft:{k:"II Samuel",b:"22:1",e:"22:51"},fullkriyah:{"1":{p:16,k:2,b:"13:17",e:"13:22"},"2":{p:16,k:2,b:"14:1",e:"14:8"},"3":{p:16,k:2,b:"14:9",e:"14:14"},"4":{p:16,k:2,b:"14:15",e:"14:25"},"5":{p:16,k:2,b:"14:26",e:"15:26"},M:{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach VII (on Shabbat)":{haft:{k:"II Samuel",b:"22:1",e:"22:51"},fullkriyah:{"1":{p:16,k:2,b:"13:17",e:"13:19"},"2":{p:16,k:2,b:"13:20",e:"13:22"},"3":{p:16,k:2,b:"14:1",e:"14:4"},"4":{p:16,k:2,b:"14:5",e:"14:8"},"5":{p:16,k:2,b:"14:9",e:"14:14"},"6":{p:16,k:2,b:"14:15",e:"14:25"},"7":{p:16,k:2,b:"14:26",e:"15:26"},M:{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach VIII":{haft:{k:"Isaiah",b:"10:32",e:"12:6"},fullkriyah:{"1":{p:47,k:5,b:"15:19",e:"15:23"},"2":{p:47,k:5,b:"16:1",e:"16:3"},"3":{p:47,k:5,b:"16:4",e:"16:8"},"4":{p:47,k:5,b:"16:9",e:"16:12"},"5":{p:47,k:5,b:"16:13",e:"16:17"},M:{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach VIII (on Shabbat)":{haft:{k:"Isaiah",b:"10:32",e:"12:6"},fullkriyah:{"1":{p:47,k:5,b:"14:22",e:"14:29"},"2":{p:47,k:5,b:"15:1",e:"15:18"},"3":{p:47,k:5,b:"15:19",e:"15:23"},"4":{p:47,k:5,b:"16:1",e:"16:3"},"5":{p:47,k:5,b:"16:4",e:"16:8"},"6":{p:47,k:5,b:"16:9",e:"16:12"},"7":{p:47,k:5,b:"16:13",e:"16:17"},M:{p:41,k:4,b:"28:19",e:"28:25"}}},"Pesach III (CH''M)":{alias:true,il:true,key:"Pesach Chol ha-Moed Day 1"},"Pesach IV (CH''M)":{alias:true,il:true,key:"Pesach Chol ha-Moed Day 2"},"Pesach V (CH''M)":{alias:true,il:true,key:"Pesach Chol ha-Moed Day 3"},"Pesach VI (CH''M)":{alias:true,il:true,key:"Pesach Chol ha-Moed Day 4"},"Shavuot I":{haft:[{k:"Ezekiel",b:"1:1",e:"1:28"},{k:"Ezekiel",b:"3:12",e:"3:12"}],fullkriyah:{"1":{p:17,k:2,b:"19:1",e:"19:6"},"2":{p:17,k:2,b:"19:7",e:"19:13"},"3":{p:17,k:2,b:"19:14",e:"19:19"},"4":{p:17,k:2,b:"19:20",e:"20:14"},"5":{p:17,k:2,b:"20:15",e:"20:23"},M:{p:41,k:4,b:"28:26",e:"28:31"}}},"Shavuot II":{haft:{k:"Habakkuk",b:"3:1",e:"3:19"},fullkriyah:{"1":{p:47,k:5,b:"15:19",e:"15:23"},"2":{p:47,k:5,b:"16:1",e:"16:3"},"3":{p:47,k:5,b:"16:4",e:"16:8"},"4":{p:47,k:5,b:"16:9",e:"16:12"},"5":{p:47,k:5,b:"16:13",e:"16:17"},M:{p:41,k:4,b:"28:26",e:"28:31"}}},"Shavuot II (on Shabbat)":{haft:{k:"Habakkuk",b:"3:1",e:"3:19"},fullkriyah:{"1":{p:47,k:5,b:"14:22",e:"14:29"},"2":{p:47,k:5,b:"15:1",e:"15:18"},"3":{p:47,k:5,b:"15:19",e:"15:23"},"4":{p:47,k:5,b:"16:1",e:"16:3"},"5":{p:47,k:5,b:"16:4",e:"16:8"},"6":{p:47,k:5,b:"16:9",e:"16:12"},"7":{p:47,k:5,b:"16:13",e:"16:17"},M:{p:41,k:4,b:"28:26",e:"28:31"}}},"Fast Day (Morning)":{fullkriyah:{"1":{p:21,k:2,b:"32:11",e:"32:14"},"2":{p:21,k:2,b:"34:1",e:"34:3"},"3":{p:21,k:2,b:"34:4",e:"34:10"}}},"Fast Day (Afternoon)":{haft:{k:"Isaiah",b:"55:6",e:"56:8"},fullkriyah:{"1":{p:21,k:2,b:"32:11",e:"32:14"},"2":{p:21,k:2,b:"34:1",e:"34:3"},M:{p:21,k:2,b:"34:4",e:"34:10"}}},"Asara B'Tevet":{alias:true,key:"Fast Day (Morning)"},"Ta'anit Bechorot":{alias:true,key:"Fast Day (Morning)"},"Ta'anit Esther":{alias:true,key:"Fast Day (Morning)"},"Tzom Gedaliah":{alias:true,key:"Fast Day (Morning)"},"Tzom Tammuz":{alias:true,key:"Fast Day (Morning)"},"Asara B'Tevet (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Ta'anit Bechorot (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Ta'anit Esther (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Tzom Gedaliah (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Tzom Tammuz (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Tish'a B'Av":{haft:{k:"Jeremiah",b:"8:13",e:"9:23"},fullkriyah:{"1":{p:45,k:5,b:"4:25",e:"4:29"},"2":{p:45,k:5,b:"4:30",e:"4:35"},"3":{p:45,k:5,b:"4:36",e:"4:40"}}},"Tish'a B'Av (Mincha)":{alias:true,key:"Fast Day (Afternoon)"},"Rosh Hashana I":{haft:{k:"I Samuel",b:"1:1",e:"2:10"},fullkriyah:{"1":{p:4,k:1,b:"21:1",e:"21:4"},"2":{p:4,k:1,b:"21:5",e:"21:12"},"3":{p:4,k:1,b:"21:13",e:"21:21"},"4":{p:4,k:1,b:"21:22",e:"21:27"},"5":{p:4,k:1,b:"21:28",e:"21:34"},M:{p:41,k:4,b:"29:1",e:"29:6"}}},"Rosh Hashana I (on Shabbat)":{haft:{k:"I Samuel",b:"1:1",e:"2:10"},fullkriyah:{"1":{p:4,k:1,b:"21:1",e:"21:4"},"2":{p:4,k:1,b:"21:5",e:"21:8"},"3":{p:4,k:1,b:"21:9",e:"21:12"},"4":{p:4,k:1,b:"21:13",e:"21:17"},"5":{p:4,k:1,b:"21:18",e:"21:21"},"6":{p:4,k:1,b:"21:22",e:"21:27"},"7":{p:4,k:1,b:"21:28",e:"21:34"},M:{p:41,k:4,b:"29:1",e:"29:6"}}},"Rosh Hashana II":{haft:{k:"Jeremiah",b:"31:1",e:"31:19"},fullkriyah:{"1":{p:4,k:1,b:"22:1",e:"22:3"},"2":{p:4,k:1,b:"22:4",e:"22:8"},"3":{p:4,k:1,b:"22:9",e:"22:14"},"4":{p:4,k:1,b:"22:15",e:"22:19"},"5":{p:4,k:1,b:"22:20",e:"22:24"},M:{p:41,k:4,b:"29:1",e:"29:6"}}},"Yom Kippur":{haft:{k:"Isaiah",b:"57:14",e:"58:14"},fullkriyah:{"1":{p:29,k:3,b:"16:1",e:"16:6"},"2":{p:29,k:3,b:"16:7",e:"16:11"},"3":{p:29,k:3,b:"16:12",e:"16:17"},"4":{p:29,k:3,b:"16:18",e:"16:24"},"5":{p:29,k:3,b:"16:25",e:"16:30"},"6":{p:29,k:3,b:"16:31",e:"16:34"},M:{p:41,k:4,b:"29:7",e:"29:11"}}},"Yom Kippur (on Shabbat)":{haft:{k:"Isaiah",b:"57:14",e:"58:14"},fullkriyah:{"1":{p:29,k:3,b:"16:1",e:"16:3"},"2":{p:29,k:3,b:"16:4",e:"16:6"},"3":{p:29,k:3,b:"16:7",e:"16:11"},"4":{p:29,k:3,b:"16:12",e:"16:17"},"5":{p:29,k:3,b:"16:18",e:"16:24"},"6":{p:29,k:3,b:"16:25",e:"16:30"},"7":{p:29,k:3,b:"16:31",e:"16:34"},M:{p:41,k:4,b:"29:7",e:"29:11"}}},"Yom Kippur (Mincha)":{alias:true,key:"Yom Kippur (Mincha, Traditional)"},"Yom Kippur (Mincha, Traditional)":{haft:[{k:"Jonah",b:"1:1",e:"4:11"},{k:"Micah",b:"7:18",e:"7:20"}],fullkriyah:{"1":{p:29,k:3,b:"18:1",e:"18:5"},"2":{p:29,k:3,b:"18:6",e:"18:21"},M:{p:29,k:3,b:"18:22",e:"18:30"}}},"Yom Kippur (Mincha, Alternate)":{haft:[{k:"Jonah",b:"1:1",e:"4:11"},{k:"Micah",b:"7:18",e:"7:20"}],fullkriyah:{"1":{p:30,k:3,b:"19:1",e:"19:4"},"2":{p:30,k:3,b:"19:5",e:"19:10"},M:{p:30,k:3,b:"19:11",e:"19:18"}}},"Sukkot I":{haft:{k:"Zechariah",b:"14:1",e:"14:21"},fullkriyah:{"1":{p:31,k:3,b:"22:26",e:"23:3"},"2":{p:31,k:3,b:"23:4",e:"23:14"},"3":{p:31,k:3,b:"23:15",e:"23:22"},"4":{p:31,k:3,b:"23:23",e:"23:32"},"5":{p:31,k:3,b:"23:33",e:"23:44"},M:{p:41,k:4,b:"29:12",e:"29:16"}}},"Sukkot I (on Shabbat)":{haft:{k:"Zechariah",b:"14:1",e:"14:21"},fullkriyah:{"1":{p:31,k:3,b:"22:26",e:"22:33"},"2":{p:31,k:3,b:"23:1",e:"23:3"},"3":{p:31,k:3,b:"23:4",e:"23:8"},"4":{p:31,k:3,b:"23:9",e:"23:14"},"5":{p:31,k:3,b:"23:15",e:"23:22"},"6":{p:31,k:3,b:"23:23",e:"23:32"},"7":{p:31,k:3,b:"23:33",e:"23:44"},M:{p:41,k:4,b:"29:12",e:"29:16"}}},"Sukkot II":{haft:{k:"I Kings",b:"8:2",e:"8:21"},fullkriyah:{"1":{p:31,k:3,b:"22:26",e:"23:3"},"2":{p:31,k:3,b:"23:4",e:"23:14"},"3":{p:31,k:3,b:"23:15",e:"23:22"},"4":{p:31,k:3,b:"23:23",e:"23:32"},"5":{p:31,k:3,b:"23:33",e:"23:44"},M:{p:41,k:4,b:"29:12",e:"29:16"}}},"Sukkot Chol ha-Moed Day 1":{fullkriyah:{"1":{p:41,k:4,b:"29:17",e:"29:19"},"2":{p:41,k:4,b:"29:20",e:"29:22"},"3":{p:41,k:4,b:"29:23",e:"29:25"},"4":{p:41,k:4,b:"29:17",e:"29:22"}}},"Sukkot Chol ha-Moed Day 2":{fullkriyah:{"1":{p:41,k:4,b:"29:20",e:"29:22"},"2":{p:41,k:4,b:"29:23",e:"29:25"},"3":{p:41,k:4,b:"29:26",e:"29:28"},"4":{p:41,k:4,b:"29:20",e:"29:25"}}},"Sukkot Chol ha-Moed Day 3":{fullkriyah:{"1":{p:41,k:4,b:"29:23",e:"29:25"},"2":{p:41,k:4,b:"29:26",e:"29:28"},"3":{p:41,k:4,b:"29:29",e:"29:31"},"4":{p:41,k:4,b:"29:23",e:"29:28"}}},"Sukkot Chol ha-Moed Day 4":{fullkriyah:{"1":{p:41,k:4,b:"29:26",e:"29:28"},"2":{p:41,k:4,b:"29:29",e:"29:31"},"3":{p:41,k:4,b:"29:32",e:"29:34"},"4":{p:41,k:4,b:"29:26",e:"29:31"}}},"Sukkot Chol ha-Moed Day 5":{fullkriyah:{"1":{p:41,k:4,b:"29:29",e:"29:31"},"2":{p:41,k:4,b:"29:32",e:"29:34"},"3":{p:41,k:4,b:"29:35",e:"29:37"},"4":{p:41,k:4,b:"29:29",e:"29:34"}}},"Sukkot Shabbat Chol ha-Moed":{haft:{k:"Ezekiel",b:"38:18",e:"39:16"},fullkriyah:{"1":{p:21,k:2,b:"33:12",e:"33:16"},"2":{p:21,k:2,b:"33:17",e:"33:19"},"3":{p:21,k:2,b:"33:20",e:"33:23"},"4":{p:21,k:2,b:"34:1",e:"34:3"},"5":{p:21,k:2,b:"34:4",e:"34:10"},"6":{p:21,k:2,b:"34:11",e:"34:17"},"7":{p:21,k:2,b:"34:18",e:"34:26"},"M-day1":{p:41,k:4,b:"29:17",e:"29:22"},"M-day2":{p:41,k:4,b:"29:20",e:"29:25"},"M-day3":{p:41,k:4,b:"29:23",e:"29:28"},"M-day4":{p:41,k:4,b:"29:26",e:"29:31"},"M-day5":{p:41,k:4,b:"29:29",e:"29:34"}}},"Sukkot Final Day (Hoshana Raba)":{fullkriyah:{"1":{p:41,k:4,b:"29:26",e:"29:28"},"2":{p:41,k:4,b:"29:29",e:"29:31"},"3":{p:41,k:4,b:"29:32",e:"29:34"},"4":{p:41,k:4,b:"29:29",e:"29:34"}}},"Shmini Atzeret":{haft:{k:"I Kings",b:"8:54",e:"8:66"},fullkriyah:{"1":{p:47,k:5,b:"14:22",e:"14:29"},"2":{p:47,k:5,b:"15:1",e:"15:18"},"3":{p:47,k:5,b:"15:19",e:"16:3"},"4":{p:47,k:5,b:"16:4",e:"16:8"},"5":{p:47,k:5,b:"16:9",e:"16:17"},M:{p:41,k:4,b:"29:35",e:"30:1"}}},"Shmini Atzeret (on Shabbat)":{haft:{k:"I Kings",b:"8:54",e:"8:66"},fullkriyah:{"1":{p:47,k:5,b:"14:22",e:"14:29"},"2":{p:47,k:5,b:"15:1",e:"15:18"},"3":{p:47,k:5,b:"15:19",e:"15:23"},"4":{p:47,k:5,b:"16:1",e:"16:3"},"5":{p:47,k:5,b:"16:4",e:"16:8"},"6":{p:47,k:5,b:"16:9",e:"16:12"},"7":{p:47,k:5,b:"16:13",e:"16:17"},M:{p:41,k:4,b:"29:35",e:"30:1"}}},"Erev Simchat Torah":{fullkriyah:{"1":{p:54,k:5,b:"33:1",e:"33:7"},"2":{p:54,k:5,b:"33:8",e:"33:12"},"3":{p:54,k:5,b:"33:13",e:"33:17"},"4":{p:54,k:5,b:"33:18",e:"33:21"},"5":{p:54,k:5,b:"33:22",e:"33:26"}}},"Simchat Torah":{haft:{k:"Joshua",b:"1:1",e:"1:18"},fullkriyah:{"1":{p:54,k:5,b:"33:1",e:"33:7"},"2":{p:54,k:5,b:"33:8",e:"33:12"},"3":{p:54,k:5,b:"33:13",e:"33:17"},"4":{p:54,k:5,b:"33:18",e:"33:21"},"5":{p:54,k:5,b:"33:22",e:"33:26"},"6":{p:54,k:5,b:"33:27",e:"34:12"},"7":{p:1,k:1,b:"1:1",e:"2:3"},M:{p:41,k:4,b:"29:35",e:"30:1"}}},"Shabbat Rosh Chodesh Chanukah":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{"7":{p:41,k:4,b:"28:9",e:"28:15"},M:{p:35,k:4,b:"7:42",e:"7:47"}}},"Chanukah Day 1":{fullkriyah:{"1":{p:35,k:4,b:"7:1",e:"7:11"},"2":{p:35,k:4,b:"7:12",e:"7:14"},"3":{p:35,k:4,b:"7:15",e:"7:17"}},alt:{"1":{p:35,k:4,b:"7:1",e:"7:3"},"2":{p:35,k:4,b:"7:4",e:"7:11"},"3":{p:35,k:4,b:"7:12",e:"7:17"}}},"Chanukah Day 1 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:1",e:"7:17"}}},"Chanukah Day 2":{fullkriyah:{"1":{p:35,k:4,b:"7:18",e:"7:20"},"2":{p:35,k:4,b:"7:21",e:"7:23"},"3":{p:35,k:4,b:"7:24",e:"7:29"}},alt:{"1":{p:35,k:4,b:"7:18",e:"7:20"},"2":{p:35,k:4,b:"7:21",e:"7:23"},"3":{p:35,k:4,b:"7:18",e:"7:23"}}},"Chanukah Day 2 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:18",e:"7:23"}}},"Chanukah Day 3":{fullkriyah:{"1":{p:35,k:4,b:"7:24",e:"7:26"},"2":{p:35,k:4,b:"7:27",e:"7:29"},"3":{p:35,k:4,b:"7:30",e:"7:35"}},alt:{"1":{p:35,k:4,b:"7:24",e:"7:26"},"2":{p:35,k:4,b:"7:27",e:"7:29"},"3":{p:35,k:4,b:"7:24",e:"7:29"}}},"Chanukah Day 3 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:24",e:"7:29"}}},"Chanukah Day 4":{fullkriyah:{"1":{p:35,k:4,b:"7:30",e:"7:32"},"2":{p:35,k:4,b:"7:33",e:"7:35"},"3":{p:35,k:4,b:"7:36",e:"7:41"}},alt:{"1":{p:35,k:4,b:"7:30",e:"7:32"},"2":{p:35,k:4,b:"7:33",e:"7:35"},"3":{p:35,k:4,b:"7:30",e:"7:35"}}},"Chanukah Day 4 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:30",e:"7:35"}}},"Chanukah Day 5":{fullkriyah:{"1":{p:35,k:4,b:"7:36",e:"7:38"},"2":{p:35,k:4,b:"7:39",e:"7:41"},"3":{p:35,k:4,b:"7:42",e:"7:47"}},alt:{"1":{p:35,k:4,b:"7:36",e:"7:38"},"2":{p:35,k:4,b:"7:39",e:"7:41"},"3":{p:35,k:4,b:"7:36",e:"7:41"}}},"Chanukah Day 5 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:36",e:"7:41"}}},"Chanukah Day 6":{fullkriyah:{"1":{p:41,k:4,b:"28:1",e:"28:5"},"2":{p:41,k:4,b:"28:6",e:"28:10"},"3":{p:41,k:4,b:"28:11",e:"28:15"},"4":{p:35,k:4,b:"7:42",e:"7:47"}}},"Chanukah Day 7":{fullkriyah:{"1":{p:35,k:4,b:"7:48",e:"7:50"},"2":{p:35,k:4,b:"7:51",e:"7:53"},"3":{p:35,k:4,b:"7:54",e:"7:59"}},alt:{"1":{p:35,k:4,b:"7:48",e:"7:50"},"2":{p:35,k:4,b:"7:51",e:"7:53"},"3":{p:35,k:4,b:"7:48",e:"7:53"}}},"Chanukah Day 7 (on Rosh Chodesh)":{fullkriyah:{"1":{p:41,k:4,b:"28:1",e:"28:5"},"2":{p:41,k:4,b:"28:6",e:"28:10"},"3":{p:41,k:4,b:"28:11",e:"28:15"},"4":{p:35,k:4,b:"7:48",e:"7:53"}}},"Chanukah Day 7 (on Shabbat)":{haft:{k:"Zechariah",b:"2:14",e:"4:7"},fullkriyah:{M:{p:35,k:4,b:"7:48",e:"7:53"}}},"Chanukah Day 8":{fullkriyah:{"1":{p:35,k:4,b:"7:54",e:"7:56"},"2":{p:35,k:4,b:"7:57",e:"7:59"},"3":{p:35,k:4,b:"7:60",e:"8:4"}}},"Chanukah Day 8 (on Shabbat)":{haft:{k:"I Kings",b:"7:40",e:"7:50"},fullkriyah:{M:{p:35,k:4,b:"7:54",e:"8:4"}}},Purim:Purim,"Shushan Purim":{fullkriyah:{"1":{p:16,k:2,b:"17:8",e:"17:10"},"2":{p:16,k:2,b:"17:11",e:"17:13"},"3":{p:16,k:2,b:"17:14",e:"17:16"}}},"Shushan Purim (on Shabbat)":{note:"Jerusalem & walled cities only: special maftir Exodus 17:8-16, same Haftara as Shabbat Zachor"},"Shabbat HaChodesh":{haft:{k:"Ezekiel",b:"45:16",e:"46:18"},fullkriyah:{M:{p:15,k:2,b:"12:1",e:"12:20"}}},"Shabbat HaChodesh (on Rosh Chodesh)":{haft:{k:"Ezekiel",b:"45:16",e:"46:18"},fullkriyah:{"7":{p:41,k:4,b:"28:9",e:"28:15"},M:{p:15,k:2,b:"12:1",e:"12:20"}}},"Shabbat HaGadol":{haft:{k:"Malachi",b:"3:4",e:"3:24"}},"Shabbat Parah":{haft:{k:"Ezekiel",b:"36:16",e:"36:38"},fullkriyah:{M:{p:39,k:4,b:"19:1",e:"19:22"}}},"Shabbat Shekalim":{haft:{k:"II Kings",b:"12:1",e:"12:17"},fullkriyah:{M:{p:21,k:2,b:"30:11",e:"30:16"}}},"Shabbat Shekalim (on Rosh Chodesh)":{haft:{k:"II Kings",b:"12:1",e:"12:17"},fullkriyah:{"7":{p:41,k:4,b:"28:9",e:"28:15"},M:{p:21,k:2,b:"30:11",e:"30:16"}}},"Shabbat Shuva (with Vayeilech)":{haft:[{k:"Hosea",b:"14:2",e:"14:10"},{k:"Micah",b:"7:18",e:"7:20"}]},"Shabbat Shuva (with Ha'Azinu)":{haft:[{k:"Hosea",b:"14:2",e:"14:10"},{k:"Joel",b:"2:15",e:"2:27"}],seph:[{k:"Hosea",b:"14:2",e:"14:10"},{k:"Micah",b:"7:18",e:"7:20"}]},"Shabbat Shuva":{haft:[{k:"Hosea",b:"14:2",e:"14:10"},{k:"Micah",b:"7:18",e:"7:20"},{k:"Joel",b:"2:15",e:"2:27"}]},"Shabbat Zachor":{haft:{k:"I Samuel",b:"15:2",e:"15:34"},fullkriyah:{M:{p:49,k:5,b:"25:17",e:"25:19"}}},"Pinchas occurring after 17 Tammuz":{haft:{k:"Jeremiah",b:"1:1",e:"2:3"}},"Masei on Shabbat Rosh Chodesh":{haft:[{k:"Jeremiah",b:"2:4",e:"2:28"},{k:"Jeremiah",b:"3:4",e:"3:4"},{k:"Isaiah",b:"66:1",e:"66:1"},{k:"Isaiah",b:"66:23",e:"66:23"}]},"Matot-Masei on Shabbat Rosh Chodesh":{alias:true,key:"Masei on Shabbat Rosh Chodesh"},"Rosh Chodesh":{fullkriyah:{"1":{p:41,k:4,b:"28:1",e:"28:3"},"2":{p:41,k:4,b:"28:3",e:"28:5"},"3":{p:41,k:4,b:"28:6",e:"28:10"},"4":{p:41,k:4,b:"28:11",e:"28:15"}}},"Rosh Chodesh Nisan":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Iyyar":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Sivan":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Tamuz":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Av":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Elul":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Tishrei":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Cheshvan":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Kislev":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Sh'vat":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Adar":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Adar I":{alias:true,key:"Rosh Chodesh"},"Rosh Chodesh Adar II":{alias:true,key:"Rosh Chodesh"},"Shabbat Rosh Chodesh":{haft:{k:"Isaiah",b:"66:1",e:"66:24"},fullkriyah:{M:{p:41,k:4,b:"28:9",e:"28:15"}}},"Shabbat Machar Chodesh":{haft:{k:"I Samuel",b:"20:18",e:"20:42"}}};
|
|
1417
1385
|
|
|
1418
1386
|
/**
|
|
1419
1387
|
* Is there a special festival Torah Reading for `holiday`?
|
|
1420
1388
|
* @param {string} holiday
|
|
1421
1389
|
* @return {boolean}
|
|
1422
1390
|
*/
|
|
1423
|
-
|
|
1424
1391
|
function hasFestival(holiday) {
|
|
1425
1392
|
return _typeof(festivals[holiday]) === 'object';
|
|
1426
1393
|
}
|
|
1394
|
+
|
|
1427
1395
|
/**
|
|
1428
1396
|
* Returns the raw metadata for festival reading for `holiday`
|
|
1429
1397
|
* @param {string} holiday
|
|
1430
1398
|
* @return {any}
|
|
1431
1399
|
*/
|
|
1432
|
-
|
|
1433
1400
|
function lookupFestival(holiday) {
|
|
1434
1401
|
var src = festivals[holiday];
|
|
1435
|
-
|
|
1436
1402
|
if (typeof src === 'undefined') {
|
|
1437
1403
|
return undefined;
|
|
1438
1404
|
}
|
|
1439
|
-
|
|
1440
1405
|
if (src.alias) {
|
|
1441
1406
|
var tmp = festivals[src.key];
|
|
1442
|
-
|
|
1443
1407
|
if (typeof tmp === 'undefined') {
|
|
1444
1408
|
throw new Error("Leyning alias ".concat(holiday, " => ").concat(src.key, " not found"));
|
|
1445
1409
|
}
|
|
1446
|
-
|
|
1447
1410
|
src = tmp;
|
|
1448
1411
|
}
|
|
1449
|
-
|
|
1450
1412
|
var result = src.fullkriyah ? clone(src) : src;
|
|
1451
|
-
|
|
1452
1413
|
if (result.fullkriyah) {
|
|
1453
1414
|
Object.values(result.fullkriyah).forEach(function (aliyah) {
|
|
1454
1415
|
if (typeof aliyah.k === 'number') {
|
|
@@ -1456,33 +1417,28 @@ function lookupFestival(holiday) {
|
|
|
1456
1417
|
}
|
|
1457
1418
|
});
|
|
1458
1419
|
}
|
|
1459
|
-
|
|
1460
1420
|
return result;
|
|
1461
1421
|
}
|
|
1462
1422
|
|
|
1463
|
-
var HOLIDAY_IGNORE_MASK = core.flags.DAF_YOMI | core.flags.OMER_COUNT | core.flags.SHABBAT_MEVARCHIM | core.flags.MOLAD | core.flags.USER_EVENT | core.flags.HEBREW_DATE | core.flags.MISHNA_YOMI | core.flags.MODERN_HOLIDAY;
|
|
1423
|
+
var HOLIDAY_IGNORE_MASK = core.flags.DAF_YOMI | core.flags.OMER_COUNT | core.flags.SHABBAT_MEVARCHIM | core.flags.MOLAD | core.flags.USER_EVENT | core.flags.HEBREW_DATE | core.flags.MISHNA_YOMI | core.flags.MODERN_HOLIDAY | core.flags.YERUSHALMI_YOMI;
|
|
1424
|
+
|
|
1464
1425
|
/**
|
|
1465
1426
|
* Based on the event date, type and title, finds the relevant leyning key
|
|
1466
1427
|
* @param {Event} ev event
|
|
1467
1428
|
* @param {boolean} [il] true if Israel holiday scheme
|
|
1468
1429
|
* @return {string} key to look up in holiday-reading.json
|
|
1469
1430
|
*/
|
|
1470
|
-
|
|
1471
1431
|
function getLeyningKeyForEvent(ev) {
|
|
1472
1432
|
var il = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1473
1433
|
var mask = ev.getFlags();
|
|
1474
|
-
|
|
1475
1434
|
if (mask & HOLIDAY_IGNORE_MASK) {
|
|
1476
1435
|
return undefined;
|
|
1477
|
-
}
|
|
1478
|
-
|
|
1479
|
-
|
|
1436
|
+
}
|
|
1437
|
+
// Skip all Erevs except for Simchat Torah
|
|
1480
1438
|
var desc = ev.getDesc();
|
|
1481
|
-
|
|
1482
1439
|
if (mask & core.flags.EREV && desc !== 'Erev Simchat Torah') {
|
|
1483
1440
|
return undefined;
|
|
1484
1441
|
}
|
|
1485
|
-
|
|
1486
1442
|
var hd = ev.getDate();
|
|
1487
1443
|
var day = hd.getDate();
|
|
1488
1444
|
var dow = hd.abs() % 7;
|
|
@@ -1491,15 +1447,12 @@ function getLeyningKeyForEvent(ev) {
|
|
|
1491
1447
|
var isRoshChodesh = day == 1 || day == 30;
|
|
1492
1448
|
var holiday = ev.basename();
|
|
1493
1449
|
var isPesach = holiday === 'Pesach';
|
|
1494
|
-
|
|
1495
1450
|
if (il && isPesach) {
|
|
1496
1451
|
if (isShabbat) {
|
|
1497
1452
|
return day === 15 || day === 21 ? desc + ' (on Shabbat)' : 'Pesach Shabbat Chol ha-Moed';
|
|
1498
1453
|
}
|
|
1499
|
-
|
|
1500
1454
|
return desc;
|
|
1501
1455
|
}
|
|
1502
|
-
|
|
1503
1456
|
if (day == 1 && month === core.months.TISHREI) {
|
|
1504
1457
|
return isShabbat ? 'Rosh Hashana I (on Shabbat)' : 'Rosh Hashana I';
|
|
1505
1458
|
} else if (ev.cholHaMoedDay) {
|
|
@@ -1508,12 +1461,10 @@ function getLeyningKeyForEvent(ev) {
|
|
|
1508
1461
|
return holiday + ' Shabbat Chol ha-Moed';
|
|
1509
1462
|
} else if (desc == 'Sukkot VII (Hoshana Raba)') {
|
|
1510
1463
|
return 'Sukkot Final Day (Hoshana Raba)';
|
|
1511
|
-
}
|
|
1464
|
+
}
|
|
1465
|
+
// If Shabbat falls on the third day of Chol ha-Moed Pesach,
|
|
1512
1466
|
// the readings for the third, fourth, and fifth days are moved ahead
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
1467
|
var cholHaMoedDay = ev.cholHaMoedDay;
|
|
1516
|
-
|
|
1517
1468
|
if (isPesach && cholHaMoedDay >= 3) {
|
|
1518
1469
|
if (dow == 0 && cholHaMoedDay == 4) {
|
|
1519
1470
|
cholHaMoedDay = 3;
|
|
@@ -1521,7 +1472,6 @@ function getLeyningKeyForEvent(ev) {
|
|
|
1521
1472
|
cholHaMoedDay = 4;
|
|
1522
1473
|
}
|
|
1523
1474
|
}
|
|
1524
|
-
|
|
1525
1475
|
return "".concat(holiday, " Chol ha-Moed Day ").concat(cholHaMoedDay);
|
|
1526
1476
|
} else if (ev.chanukahDay) {
|
|
1527
1477
|
if (isShabbat && isRoshChodesh) {
|
|
@@ -1534,54 +1484,42 @@ function getLeyningKeyForEvent(ev) {
|
|
|
1534
1484
|
return "Chanukah Day ".concat(ev.chanukahDay);
|
|
1535
1485
|
}
|
|
1536
1486
|
}
|
|
1537
|
-
|
|
1538
1487
|
if (isRoshChodesh && (desc == 'Shabbat HaChodesh' || desc == 'Shabbat Shekalim')) {
|
|
1539
1488
|
return desc + ' (on Rosh Chodesh)';
|
|
1540
1489
|
}
|
|
1541
|
-
|
|
1542
1490
|
if (desc == 'Shavuot') {
|
|
1543
1491
|
return 'Shavuot I';
|
|
1544
1492
|
} else if (il && desc == 'Shmini Atzeret') {
|
|
1545
1493
|
return 'Simchat Torah';
|
|
1546
1494
|
}
|
|
1547
|
-
|
|
1548
1495
|
if (isShabbat && 'Shabbat' != desc.substring(0, 7)) {
|
|
1549
1496
|
if (isRoshChodesh) {
|
|
1550
1497
|
if (desc === 'Rosh Chodesh Tevet') {
|
|
1551
1498
|
return 'Shabbat Rosh Chodesh Chanukah';
|
|
1552
1499
|
}
|
|
1553
|
-
|
|
1554
1500
|
return 'Shabbat Rosh Chodesh';
|
|
1555
1501
|
}
|
|
1556
|
-
|
|
1557
1502
|
var desc2 = desc + ' (on Shabbat)';
|
|
1558
|
-
|
|
1559
1503
|
if (hasFestival(desc2)) {
|
|
1560
1504
|
return desc2;
|
|
1561
1505
|
}
|
|
1562
1506
|
}
|
|
1563
|
-
|
|
1564
1507
|
if (hasFestival(desc)) {
|
|
1565
1508
|
return desc;
|
|
1566
1509
|
}
|
|
1567
|
-
|
|
1568
1510
|
if (isShabbat) {
|
|
1569
1511
|
var tommorow = hd.next().getDate();
|
|
1570
|
-
|
|
1571
1512
|
if (tommorow === 30 || tommorow === 1) {
|
|
1572
1513
|
return 'Shabbat Machar Chodesh';
|
|
1573
1514
|
}
|
|
1574
1515
|
}
|
|
1575
|
-
|
|
1576
1516
|
if (desc === 'Rosh Hashana LaBehemot') {
|
|
1577
1517
|
return undefined;
|
|
1578
1518
|
}
|
|
1579
|
-
|
|
1580
1519
|
if (desc === 'Rosh Chodesh Tevet') {
|
|
1581
1520
|
if (isShabbat) {
|
|
1582
1521
|
return 'Shabbat Rosh Chodesh Chanukah';
|
|
1583
1522
|
}
|
|
1584
|
-
|
|
1585
1523
|
if (day === 30 || core.HDate.shortKislev(hd.getFullYear())) {
|
|
1586
1524
|
return 'Chanukah Day 6'; // 30th of Kislev or 1st of Tevet
|
|
1587
1525
|
} else {
|
|
@@ -1592,11 +1530,9 @@ function getLeyningKeyForEvent(ev) {
|
|
|
1592
1530
|
if (isRoshChodesh) {
|
|
1593
1531
|
return desc;
|
|
1594
1532
|
}
|
|
1595
|
-
|
|
1596
1533
|
if (desc === 'Tish\'a B\'Av (observed)') {
|
|
1597
1534
|
return 'Tish\'a B\'Av';
|
|
1598
1535
|
}
|
|
1599
|
-
|
|
1600
1536
|
return undefined;
|
|
1601
1537
|
}
|
|
1602
1538
|
|
|
@@ -1604,45 +1540,40 @@ function getLeyningKeyForEvent(ev) {
|
|
|
1604
1540
|
* @private
|
|
1605
1541
|
* @param {Object<string,Aliyah>} aliyot
|
|
1606
1542
|
*/
|
|
1607
|
-
|
|
1608
1543
|
function aliyotCombine67(aliyot) {
|
|
1609
1544
|
var a6 = clone(aliyot['6']);
|
|
1610
1545
|
var a7 = aliyot['7'];
|
|
1611
|
-
|
|
1612
1546
|
if (a6.k !== a7.k) {
|
|
1613
1547
|
throw new Error('Impossible to combine aliyot 6 & 7: ' + JSON.stringify(aliyot));
|
|
1614
1548
|
}
|
|
1615
|
-
|
|
1616
1549
|
delete aliyot['7'];
|
|
1617
1550
|
aliyot['6'] = {
|
|
1618
1551
|
k: a6.k,
|
|
1619
1552
|
b: a6.b,
|
|
1620
1553
|
e: a7.e
|
|
1621
1554
|
};
|
|
1622
|
-
|
|
1623
1555
|
if (a6.v && a7.v) {
|
|
1624
1556
|
aliyot['6'].v = a6.v + a7.v;
|
|
1625
1557
|
}
|
|
1626
1558
|
}
|
|
1559
|
+
|
|
1627
1560
|
/**
|
|
1628
1561
|
* @private
|
|
1629
1562
|
* @param {Object<string,Aliyah>} aliyot
|
|
1630
1563
|
* @param {Object<string,Aliyah>} special
|
|
1631
1564
|
*/
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
1565
|
function mergeAliyotWithSpecial(aliyot, special) {
|
|
1635
1566
|
if (special['7']) {
|
|
1636
1567
|
aliyotCombine67(aliyot);
|
|
1637
1568
|
aliyot['7'] = clone(special['7']);
|
|
1638
1569
|
calculateNumVerses(aliyot['7']);
|
|
1639
1570
|
}
|
|
1640
|
-
|
|
1641
1571
|
if (special['M']) {
|
|
1642
1572
|
aliyot['M'] = clone(special['M']);
|
|
1643
1573
|
calculateNumVerses(aliyot['M']);
|
|
1644
1574
|
}
|
|
1645
1575
|
}
|
|
1576
|
+
|
|
1646
1577
|
/**
|
|
1647
1578
|
* Determines if the regular parashat haShavua coincides with an event that requires
|
|
1648
1579
|
* a special maftir or Haftara (for example Shabbat HaGadol, Shabbat Chanukah, Rosh
|
|
@@ -1661,33 +1592,28 @@ function mergeAliyotWithSpecial(aliyot, special) {
|
|
|
1661
1592
|
* @param {boolean} [wantSeph]
|
|
1662
1593
|
* @return {Aliyah | Aliyah[]}
|
|
1663
1594
|
*/
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
1595
|
function specialReadings(hd, il, aliyot, reason, parsha) {
|
|
1667
1596
|
var wantSeph = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
|
|
1668
1597
|
var haft;
|
|
1669
1598
|
var seph;
|
|
1670
1599
|
var specialHaft = false;
|
|
1671
|
-
var parshaName = parsha ? parshaToString(parsha) : null;
|
|
1600
|
+
var parshaName = parsha ? parshaToString(parsha) : null;
|
|
1672
1601
|
|
|
1602
|
+
// eslint-disable-next-line require-jsdoc
|
|
1673
1603
|
function handleSpecial(key) {
|
|
1674
1604
|
var special = lookupFestival(key);
|
|
1675
|
-
|
|
1676
1605
|
if (!special) {
|
|
1677
1606
|
return;
|
|
1678
1607
|
}
|
|
1679
|
-
|
|
1680
1608
|
if (special.haft && !specialHaft) {
|
|
1681
1609
|
haft = cloneHaftara(special.haft);
|
|
1682
1610
|
reason.haftara = key;
|
|
1683
1611
|
specialHaft = true;
|
|
1684
|
-
|
|
1685
1612
|
if (special.seph) {
|
|
1686
1613
|
seph = cloneHaftara(special.seph);
|
|
1687
1614
|
reason.sephardic = key;
|
|
1688
1615
|
}
|
|
1689
1616
|
}
|
|
1690
|
-
|
|
1691
1617
|
if (special.fullkriyah) {
|
|
1692
1618
|
mergeAliyotWithSpecial(aliyot, special.fullkriyah);
|
|
1693
1619
|
Object.keys(special.fullkriyah).map(function (k) {
|
|
@@ -1695,7 +1621,6 @@ function specialReadings(hd, il, aliyot, reason, parsha) {
|
|
|
1695
1621
|
});
|
|
1696
1622
|
}
|
|
1697
1623
|
}
|
|
1698
|
-
|
|
1699
1624
|
var events0 = core.HebrewCalendar.getHolidaysOnDate(hd, il) || [];
|
|
1700
1625
|
var events = events0.filter(function (ev) {
|
|
1701
1626
|
return !(ev.getFlags() & core.flags.ROSH_CHODESH);
|
|
@@ -1705,16 +1630,13 @@ function specialReadings(hd, il, aliyot, reason, parsha) {
|
|
|
1705
1630
|
handleSpecial("Shabbat Shuva (with ".concat(parshaName, ")"));
|
|
1706
1631
|
} else {
|
|
1707
1632
|
var key = getLeyningKeyForEvent(ev, il);
|
|
1708
|
-
|
|
1709
1633
|
if (key) {
|
|
1710
1634
|
handleSpecial(key);
|
|
1711
1635
|
}
|
|
1712
1636
|
}
|
|
1713
1637
|
});
|
|
1714
|
-
|
|
1715
1638
|
if (!haft) {
|
|
1716
1639
|
var day = hd.getDate();
|
|
1717
|
-
|
|
1718
1640
|
if (parshaName === 'Pinchas' && day > 17) {
|
|
1719
1641
|
// Pinchas is always read in Tamuz (never another month)
|
|
1720
1642
|
// either on the 14, 16, 17 (in Israel), 19, 21, 23, 24
|
|
@@ -1724,13 +1646,11 @@ function specialReadings(hd, il, aliyot, reason, parsha) {
|
|
|
1724
1646
|
handleSpecial(key);
|
|
1725
1647
|
} else {
|
|
1726
1648
|
var tommorow = hd.next().getDate();
|
|
1727
|
-
|
|
1728
1649
|
if (tommorow === 30 || tommorow === 1) {
|
|
1729
1650
|
handleSpecial('Shabbat Machar Chodesh');
|
|
1730
1651
|
}
|
|
1731
1652
|
}
|
|
1732
1653
|
}
|
|
1733
|
-
|
|
1734
1654
|
if (wantSeph && haft) {
|
|
1735
1655
|
return {
|
|
1736
1656
|
haft: haft,
|
|
@@ -1789,10 +1709,8 @@ var Bereshit={num:1,hebrew:"בְּרֵאשִׁית",book:1,haft:{k:"Isaiah",b:"4
|
|
|
1789
1709
|
* @param {boolean} [il] true if Israel holiday scheme
|
|
1790
1710
|
* @return {Leyning} map of aliyot
|
|
1791
1711
|
*/
|
|
1792
|
-
|
|
1793
1712
|
function getLeyningForHoliday(ev) {
|
|
1794
1713
|
var il = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1795
|
-
|
|
1796
1714
|
if (_typeof(ev) !== 'object' || !(ev instanceof core.Event)) {
|
|
1797
1715
|
throw new TypeError("Bad event argument: ".concat(ev));
|
|
1798
1716
|
} else if (ev.getFlags() & core.flags.PARSHA_HASHAVUA) {
|
|
@@ -1800,11 +1718,11 @@ function getLeyningForHoliday(ev) {
|
|
|
1800
1718
|
} else if (ev.getFlags() & HOLIDAY_IGNORE_MASK) {
|
|
1801
1719
|
return undefined;
|
|
1802
1720
|
}
|
|
1803
|
-
|
|
1804
1721
|
var key = getLeyningKeyForEvent(ev, il);
|
|
1805
1722
|
var leyning = getLeyningForHolidayKey(key, ev.cholHaMoedDay);
|
|
1806
1723
|
return leyning;
|
|
1807
1724
|
}
|
|
1725
|
+
|
|
1808
1726
|
/**
|
|
1809
1727
|
* Looks up leyning for a given holiday key. Key should be an
|
|
1810
1728
|
* (untranslated) string used in holiday-readings.json. Returns some
|
|
@@ -1813,64 +1731,52 @@ function getLeyningForHoliday(ev) {
|
|
|
1813
1731
|
* @param {number} [cholHaMoedDay]
|
|
1814
1732
|
* @return {Leyning} map of aliyot
|
|
1815
1733
|
*/
|
|
1816
|
-
|
|
1817
1734
|
function getLeyningForHolidayKey(key, cholHaMoedDay) {
|
|
1818
1735
|
if (typeof key !== 'string') {
|
|
1819
1736
|
return undefined;
|
|
1820
1737
|
}
|
|
1821
|
-
|
|
1822
1738
|
var src = lookupFestival(key);
|
|
1823
|
-
|
|
1824
1739
|
if (typeof src === 'undefined') {
|
|
1825
1740
|
return undefined;
|
|
1826
1741
|
}
|
|
1827
|
-
|
|
1828
1742
|
var leyning = {
|
|
1829
1743
|
name: {
|
|
1830
1744
|
en: key,
|
|
1831
1745
|
he: core.Locale.lookupTranslation(key, 'he')
|
|
1832
1746
|
}
|
|
1833
1747
|
};
|
|
1834
|
-
|
|
1835
1748
|
if (src.fullkriyah) {
|
|
1836
1749
|
leyning.fullkriyah = clone(src.fullkriyah);
|
|
1837
|
-
|
|
1838
1750
|
if (key === 'Sukkot Shabbat Chol ha-Moed' && cholHaMoedDay) {
|
|
1839
1751
|
leyning.fullkriyah['M'] = leyning.fullkriyah["M-day".concat(cholHaMoedDay)];
|
|
1840
|
-
|
|
1841
1752
|
for (var day = 1; day <= 5; day++) {
|
|
1842
1753
|
delete leyning.fullkriyah["M-day".concat(day)];
|
|
1843
1754
|
}
|
|
1844
1755
|
}
|
|
1845
|
-
|
|
1846
1756
|
if (_typeof(leyning.fullkriyah['1']) === 'object') {
|
|
1847
1757
|
var parts = makeLeyningParts(leyning.fullkriyah);
|
|
1848
1758
|
leyning.summary = makeSummaryFromParts(parts);
|
|
1849
|
-
|
|
1850
1759
|
if (parts.length > 1) {
|
|
1851
1760
|
leyning.summaryParts = parts;
|
|
1852
1761
|
}
|
|
1853
1762
|
}
|
|
1854
|
-
|
|
1855
1763
|
Object.values(leyning.fullkriyah).map(function (aliyah) {
|
|
1856
1764
|
return calculateNumVerses(aliyah);
|
|
1857
1765
|
});
|
|
1858
1766
|
}
|
|
1859
|
-
|
|
1860
1767
|
if (src.haft) {
|
|
1861
1768
|
var haft = leyning.haft = cloneHaftara(src.haft);
|
|
1862
1769
|
leyning.haftara = makeSummaryFromParts(haft);
|
|
1863
1770
|
leyning.haftaraNumV = sumVerses(haft);
|
|
1864
1771
|
}
|
|
1865
|
-
|
|
1866
1772
|
if (src.seph) {
|
|
1867
1773
|
var seph = leyning.seph = cloneHaftara(src.seph);
|
|
1868
1774
|
leyning.sephardic = makeSummaryFromParts(seph);
|
|
1869
1775
|
leyning.sephardicNumV = sumVerses(seph);
|
|
1870
1776
|
}
|
|
1871
|
-
|
|
1872
1777
|
return leyning;
|
|
1873
1778
|
}
|
|
1779
|
+
|
|
1874
1780
|
/**
|
|
1875
1781
|
* on doubled parshiot, read only the second Haftarah
|
|
1876
1782
|
* except for Nitzavim-Vayelech
|
|
@@ -1878,7 +1784,6 @@ function getLeyningForHolidayKey(key, cholHaMoedDay) {
|
|
|
1878
1784
|
* @param {string[]} parsha
|
|
1879
1785
|
* @return {string}
|
|
1880
1786
|
*/
|
|
1881
|
-
|
|
1882
1787
|
function getHaftaraKey(parsha) {
|
|
1883
1788
|
if (parsha.length == 1 || parsha[0] == 'Nitzavim') {
|
|
1884
1789
|
return parsha[0];
|
|
@@ -1886,20 +1791,17 @@ function getHaftaraKey(parsha) {
|
|
|
1886
1791
|
return parsha[1];
|
|
1887
1792
|
}
|
|
1888
1793
|
}
|
|
1794
|
+
|
|
1889
1795
|
/**
|
|
1890
1796
|
* Looks up regular leyning for a weekly parsha with no special readings
|
|
1891
1797
|
* @param {string|string[]} parsha untranslated name like 'Pinchas' or ['Pinchas'] or ['Matot','Masei']
|
|
1892
1798
|
* @return {Leyning} map of aliyot
|
|
1893
1799
|
*/
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
1800
|
function getLeyningForParsha(parsha) {
|
|
1897
1801
|
var isParshaString = typeof parsha === 'string';
|
|
1898
|
-
|
|
1899
1802
|
if (!isParshaString && (!Array.isArray(parsha) || parsha.length !== 1 && parsha.length !== 2)) {
|
|
1900
1803
|
throw new TypeError("Bad parsha argument: ".concat(parsha));
|
|
1901
1804
|
}
|
|
1902
|
-
|
|
1903
1805
|
var name = isParshaString ? parsha : parshaToString(parsha);
|
|
1904
1806
|
var raw = parshiyotObj[name];
|
|
1905
1807
|
var fullkriyah = {};
|
|
@@ -1920,7 +1822,6 @@ function getLeyningForParsha(parsha) {
|
|
|
1920
1822
|
var parts = makeLeyningParts(fullkriyah);
|
|
1921
1823
|
var summary = makeSummaryFromParts(parts);
|
|
1922
1824
|
/** @type {Leyning} */
|
|
1923
|
-
|
|
1924
1825
|
var result = {
|
|
1925
1826
|
name: {
|
|
1926
1827
|
en: name,
|
|
@@ -1933,28 +1834,22 @@ function getLeyningForParsha(parsha) {
|
|
|
1933
1834
|
summary: summary,
|
|
1934
1835
|
fullkriyah: fullkriyah
|
|
1935
1836
|
};
|
|
1936
|
-
|
|
1937
1837
|
if (parts.length > 1) {
|
|
1938
1838
|
result.summaryParts = parts;
|
|
1939
1839
|
}
|
|
1940
|
-
|
|
1941
1840
|
var hkey = getHaftaraKey(parshaNameArray);
|
|
1942
1841
|
var haft0 = parshiyotObj[hkey].haft;
|
|
1943
|
-
|
|
1944
1842
|
if (haft0) {
|
|
1945
1843
|
var haft = result.haft = cloneHaftara(haft0);
|
|
1946
1844
|
result.haftara = makeSummaryFromParts(haft);
|
|
1947
1845
|
result.haftaraNumV = sumVerses(haft);
|
|
1948
1846
|
}
|
|
1949
|
-
|
|
1950
1847
|
if (raw.seph) {
|
|
1951
1848
|
var seph = result.seph = cloneHaftara(raw.seph);
|
|
1952
1849
|
result.sephardic = makeSummaryFromParts(seph);
|
|
1953
1850
|
result.sephardicNumV = sumVerses(seph);
|
|
1954
1851
|
}
|
|
1955
|
-
|
|
1956
1852
|
var weekdaySrc = raw.weekday || parshiyotObj[parshaNameArray[0]].weekday;
|
|
1957
|
-
|
|
1958
1853
|
if (weekdaySrc) {
|
|
1959
1854
|
var weekday = result.weekday = {};
|
|
1960
1855
|
['1', '2', '3'].forEach(function (num) {
|
|
@@ -1968,9 +1863,9 @@ function getLeyningForParsha(parsha) {
|
|
|
1968
1863
|
weekday[num] = aliyah;
|
|
1969
1864
|
});
|
|
1970
1865
|
}
|
|
1971
|
-
|
|
1972
1866
|
return result;
|
|
1973
1867
|
}
|
|
1868
|
+
|
|
1974
1869
|
/**
|
|
1975
1870
|
* Looks up leyning for a regular Shabbat parsha, including any special
|
|
1976
1871
|
* maftir or Haftara.
|
|
@@ -1978,44 +1873,36 @@ function getLeyningForParsha(parsha) {
|
|
|
1978
1873
|
* @param {boolean} [il] in Israel
|
|
1979
1874
|
* @return {Leyning} map of aliyot
|
|
1980
1875
|
*/
|
|
1981
|
-
|
|
1982
1876
|
function getLeyningForParshaHaShavua(ev) {
|
|
1983
1877
|
var il = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1984
|
-
|
|
1985
1878
|
if (!ev instanceof core.Event) {
|
|
1986
1879
|
throw new TypeError("Bad event argument: ".concat(ev));
|
|
1987
1880
|
} else if (ev.getFlags() != core.flags.PARSHA_HASHAVUA) {
|
|
1988
1881
|
throw new TypeError("Event must be parsha hashavua: ".concat(ev.getDesc()));
|
|
1989
|
-
}
|
|
1990
|
-
|
|
1991
|
-
|
|
1882
|
+
}
|
|
1883
|
+
// first, collect the default aliyot and haftara
|
|
1992
1884
|
var parsha = ev.parsha;
|
|
1993
1885
|
var result = getLeyningForParsha(parsha);
|
|
1994
1886
|
var reason = {};
|
|
1995
|
-
var hd = ev.getDate();
|
|
1996
|
-
|
|
1887
|
+
var hd = ev.getDate();
|
|
1888
|
+
// Now, check for special maftir or haftara on same date
|
|
1997
1889
|
var specialHaftara = specialReadings(hd, il, result.fullkriyah, reason, parsha, true);
|
|
1998
|
-
|
|
1999
1890
|
if (specialHaftara) {
|
|
2000
1891
|
var haft = result.haft = cloneHaftara(specialHaftara.haft);
|
|
2001
1892
|
result.haftara = makeSummaryFromParts(haft);
|
|
2002
1893
|
result.haftaraNumV = sumVerses(haft);
|
|
2003
|
-
|
|
2004
1894
|
if (specialHaftara.seph) {
|
|
2005
1895
|
var seph = result.seph = cloneHaftara(specialHaftara.seph);
|
|
2006
1896
|
result.sephardic = makeSummaryFromParts(seph);
|
|
2007
1897
|
result.sephardicNumV = sumVerses(seph);
|
|
2008
1898
|
}
|
|
2009
1899
|
}
|
|
2010
|
-
|
|
2011
1900
|
if (reason['7'] || reason['M']) {
|
|
2012
1901
|
var parts = makeLeyningParts(result.fullkriyah);
|
|
2013
1902
|
result.summary = makeSummaryFromParts(parts);
|
|
2014
1903
|
result.summaryParts = parts;
|
|
2015
1904
|
}
|
|
2016
|
-
|
|
2017
1905
|
var reasons = Object.keys(reason);
|
|
2018
|
-
|
|
2019
1906
|
if (reasons.length !== 0) {
|
|
2020
1907
|
result.reason = reason;
|
|
2021
1908
|
reasons.forEach(function (num) {
|
|
@@ -2027,18 +1914,17 @@ function getLeyningForParshaHaShavua(ev) {
|
|
|
2027
1914
|
});
|
|
2028
1915
|
} else {
|
|
2029
1916
|
var aliyah = result.fullkriyah[num];
|
|
2030
|
-
|
|
2031
1917
|
if (_typeof(aliyah) === 'object') {
|
|
2032
1918
|
aliyah.reason = reason[num];
|
|
2033
1919
|
}
|
|
2034
1920
|
}
|
|
2035
1921
|
});
|
|
2036
|
-
}
|
|
2037
|
-
|
|
2038
|
-
|
|
1922
|
+
}
|
|
1923
|
+
// to avoid confusion, don't include Saturday mincha reading here
|
|
2039
1924
|
delete result.weekday;
|
|
2040
1925
|
return result;
|
|
2041
1926
|
}
|
|
1927
|
+
|
|
2042
1928
|
/**
|
|
2043
1929
|
* Looks up leyning for a regular Shabbat, Monday/Thursday weekday or holiday.
|
|
2044
1930
|
*
|
|
@@ -2056,34 +1942,26 @@ function getLeyningForParshaHaShavua(ev) {
|
|
|
2056
1942
|
* @param {boolean} il in Israel
|
|
2057
1943
|
* @return {Leyning} map of aliyot
|
|
2058
1944
|
*/
|
|
2059
|
-
|
|
2060
1945
|
function getLeyningOnDate(hdate, il) {
|
|
2061
1946
|
var dow = hdate.getDay();
|
|
2062
1947
|
var hyear = hdate.getFullYear();
|
|
2063
1948
|
var sedra = core.HebrewCalendar.getSedra(hyear, il);
|
|
2064
1949
|
var parsha = sedra.lookup(hdate);
|
|
2065
|
-
|
|
2066
1950
|
if (dow === 6 && !parsha.chag) {
|
|
2067
1951
|
var parshaEvent = new core.ParshaEvent(hdate, parsha.parsha, il);
|
|
2068
1952
|
return getLeyningForParshaHaShavua(parshaEvent, il);
|
|
2069
1953
|
}
|
|
2070
|
-
|
|
2071
1954
|
var events = core.HebrewCalendar.getHolidaysOnDate(hdate, il) || [];
|
|
2072
|
-
|
|
2073
1955
|
for (var i = 0; i < events.length; i++) {
|
|
2074
1956
|
var reading = getLeyningForHoliday(events[i], il);
|
|
2075
|
-
|
|
2076
1957
|
if (reading) {
|
|
2077
1958
|
return reading;
|
|
2078
1959
|
}
|
|
2079
1960
|
}
|
|
2080
|
-
|
|
2081
1961
|
if (dow === 1 || dow === 4) {
|
|
2082
1962
|
var saturday = hdate.onOrAfter(6);
|
|
2083
1963
|
var parsha2 = findParshaHaShavua(saturday);
|
|
2084
|
-
|
|
2085
1964
|
var _reading = getLeyningForParsha(parsha2.parsha);
|
|
2086
|
-
|
|
2087
1965
|
var result = {
|
|
2088
1966
|
name: _reading.name,
|
|
2089
1967
|
parsha: _reading.parsha,
|
|
@@ -2091,44 +1969,38 @@ function getLeyningOnDate(hdate, il) {
|
|
|
2091
1969
|
weekday: _reading.weekday
|
|
2092
1970
|
};
|
|
2093
1971
|
return result;
|
|
2094
|
-
}
|
|
2095
|
-
|
|
2096
|
-
|
|
1972
|
+
}
|
|
1973
|
+
// no reading today: it's not Shabbat, Mon/Thu, or a Torah-reading holiday
|
|
2097
1974
|
return undefined;
|
|
2098
1975
|
}
|
|
1976
|
+
|
|
2099
1977
|
/**
|
|
2100
1978
|
* @private
|
|
2101
1979
|
* @param {HDate} saturday
|
|
2102
1980
|
* @param {boolean} il
|
|
2103
1981
|
* @return {Leyning}
|
|
2104
1982
|
*/
|
|
2105
|
-
|
|
2106
1983
|
function findParshaHaShavua(saturday, il) {
|
|
2107
1984
|
var hyear = saturday.getFullYear();
|
|
2108
1985
|
var sedra = core.HebrewCalendar.getSedra(hyear, il);
|
|
2109
1986
|
var parsha = sedra.lookup(saturday);
|
|
2110
|
-
|
|
2111
1987
|
if (!parsha.chag) {
|
|
2112
1988
|
return parsha;
|
|
2113
|
-
}
|
|
2114
|
-
|
|
2115
|
-
|
|
1989
|
+
}
|
|
1990
|
+
// Search for next regular parsha, which could even spill into next year
|
|
2116
1991
|
var endOfYear = new core.HDate(1, core.months.TISHREI, hyear + 1).abs() - 1;
|
|
2117
1992
|
var endAbs = endOfYear + 30;
|
|
2118
|
-
|
|
2119
1993
|
for (var sat2 = saturday.abs() + 7; sat2 <= endAbs; sat2 += 7) {
|
|
2120
1994
|
var sedra2 = sat2 > endOfYear ? core.HebrewCalendar.getSedra(hyear + 1, il) : sedra;
|
|
2121
1995
|
var parsha2 = sedra2.lookup(sat2);
|
|
2122
|
-
|
|
2123
1996
|
if (!parsha2.chag) {
|
|
2124
1997
|
return parsha2;
|
|
2125
1998
|
}
|
|
2126
1999
|
}
|
|
2127
2000
|
/* NOTREACHED */
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
2001
|
return null;
|
|
2131
2002
|
}
|
|
2003
|
+
|
|
2132
2004
|
/**
|
|
2133
2005
|
* Parsha metadata
|
|
2134
2006
|
* @typedef {Object} ParshaMeta
|
|
@@ -2147,22 +2019,16 @@ function findParshaHaShavua(saturday, il) {
|
|
|
2147
2019
|
* @param {string|string[]} parsha
|
|
2148
2020
|
* @return {ParshaMeta}
|
|
2149
2021
|
*/
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
2022
|
function lookupParsha(parsha) {
|
|
2153
2023
|
var isParshaString = typeof parsha === 'string';
|
|
2154
|
-
|
|
2155
2024
|
if (!isParshaString && (!Array.isArray(parsha) || parsha.length !== 1 && parsha.length !== 2)) {
|
|
2156
2025
|
throw new TypeError("Bad parsha argument: ".concat(parsha));
|
|
2157
2026
|
}
|
|
2158
|
-
|
|
2159
2027
|
var name = isParshaString ? parsha : parshaToString(parsha);
|
|
2160
2028
|
var raw = parshiyotObj[name];
|
|
2161
|
-
|
|
2162
2029
|
if (_typeof(raw) !== 'object') {
|
|
2163
2030
|
throw new TypeError("Bad parsha argument: ".concat(parsha));
|
|
2164
2031
|
}
|
|
2165
|
-
|
|
2166
2032
|
return raw;
|
|
2167
2033
|
}
|
|
2168
2034
|
|
|
@@ -2171,23 +2037,22 @@ var fmt = new Intl.DateTimeFormat('en-US', {
|
|
|
2171
2037
|
month: 'short',
|
|
2172
2038
|
day: '2-digit'
|
|
2173
2039
|
});
|
|
2040
|
+
|
|
2174
2041
|
/**
|
|
2175
2042
|
* @private
|
|
2176
2043
|
* @param {Date} dt
|
|
2177
2044
|
* @return {string}
|
|
2178
2045
|
*/
|
|
2179
|
-
|
|
2180
2046
|
function fmtDate(dt) {
|
|
2181
2047
|
var s = fmt.format(dt).split(' ');
|
|
2182
2048
|
return s[1].substring(0, 2) + '-' + s[0] + '-' + s[2];
|
|
2183
2049
|
}
|
|
2050
|
+
|
|
2184
2051
|
/**
|
|
2185
2052
|
* @private
|
|
2186
2053
|
* @param {Event[]} events
|
|
2187
2054
|
* @return {Object<string,boolean>}
|
|
2188
2055
|
*/
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
2056
|
function getParshaDates(events) {
|
|
2192
2057
|
var parshaEvents = events.filter(function (ev) {
|
|
2193
2058
|
return ev.getFlags() === core.flags.PARSHA_HASHAVUA;
|
|
@@ -2198,13 +2063,13 @@ function getParshaDates(events) {
|
|
|
2198
2063
|
}, {});
|
|
2199
2064
|
return parshaDates;
|
|
2200
2065
|
}
|
|
2066
|
+
|
|
2201
2067
|
/**
|
|
2202
2068
|
* @private
|
|
2203
2069
|
* @param {fs.WriteStream} stream
|
|
2204
2070
|
* @param {number} hyear
|
|
2205
2071
|
* @param {boolean} il
|
|
2206
2072
|
*/
|
|
2207
|
-
|
|
2208
2073
|
function writeFullKriyahCsv(stream, hyear, il) {
|
|
2209
2074
|
var events0 = core.HebrewCalendar.calendar({
|
|
2210
2075
|
year: hyear,
|
|
@@ -2223,68 +2088,61 @@ function writeFullKriyahCsv(stream, hyear, il) {
|
|
|
2223
2088
|
}
|
|
2224
2089
|
});
|
|
2225
2090
|
}
|
|
2091
|
+
|
|
2226
2092
|
/**
|
|
2227
2093
|
* @private
|
|
2228
2094
|
* @param {Event} ev
|
|
2229
2095
|
* @return {boolean}
|
|
2230
2096
|
*/
|
|
2231
|
-
|
|
2232
2097
|
function ignore(ev) {
|
|
2233
2098
|
var mask = ev.getFlags();
|
|
2234
|
-
|
|
2235
2099
|
if (mask === core.flags.SPECIAL_SHABBAT) {
|
|
2236
2100
|
return true;
|
|
2237
2101
|
}
|
|
2238
|
-
|
|
2239
2102
|
if (mask !== core.flags.ROSH_CHODESH) {
|
|
2240
2103
|
return false;
|
|
2241
2104
|
}
|
|
2242
|
-
|
|
2243
2105
|
return ev.getDate().getDay() === 6;
|
|
2244
2106
|
}
|
|
2107
|
+
|
|
2245
2108
|
/**
|
|
2246
2109
|
* @private
|
|
2247
2110
|
* @param {fs.WriteStream} stream
|
|
2248
2111
|
* @param {Event} ev
|
|
2249
2112
|
* @param {boolean} il
|
|
2250
2113
|
*/
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
2114
|
function writeFullKriyahEvent(stream, ev, il) {
|
|
2254
2115
|
if (ignore(ev)) {
|
|
2255
2116
|
return;
|
|
2256
2117
|
}
|
|
2257
|
-
|
|
2258
2118
|
var mask = ev.getFlags();
|
|
2259
2119
|
var isParsha = mask === core.flags.PARSHA_HASHAVUA;
|
|
2260
2120
|
var reading = isParsha ? getLeyningForParshaHaShavua(ev, il) : getLeyningForHoliday(ev, il);
|
|
2261
|
-
|
|
2262
2121
|
if (reading) {
|
|
2263
2122
|
writeCsvLines(stream, ev, reading, il, isParsha);
|
|
2264
|
-
|
|
2265
2123
|
if (!isParsha) {
|
|
2266
2124
|
writeHolidayMincha(stream, ev, il);
|
|
2267
2125
|
}
|
|
2268
2126
|
}
|
|
2269
2127
|
}
|
|
2128
|
+
|
|
2270
2129
|
/**
|
|
2271
2130
|
* @private
|
|
2272
2131
|
* @param {fs.WriteStream} stream
|
|
2273
2132
|
* @param {Event} ev
|
|
2274
2133
|
* @param {boolean} il
|
|
2275
2134
|
*/
|
|
2276
|
-
|
|
2277
2135
|
function writeHolidayMincha(stream, ev, il) {
|
|
2278
2136
|
var desc = ev.getDesc();
|
|
2279
2137
|
var minchaDesc1 = desc + ' (Mincha)';
|
|
2280
2138
|
var readingMincha1 = getLeyningForHolidayKey(minchaDesc1);
|
|
2281
2139
|
var readingMincha = readingMincha1 || getLeyningForHolidayKey(getLeyningKeyForEvent(ev, il) + ' (Mincha)');
|
|
2282
|
-
|
|
2283
2140
|
if (readingMincha) {
|
|
2284
2141
|
var minchaEv = new core.Event(ev.getDate(), minchaDesc1, core.flags.USER_EVENT);
|
|
2285
2142
|
writeCsvLines(stream, minchaEv, readingMincha, il, false);
|
|
2286
2143
|
}
|
|
2287
2144
|
}
|
|
2145
|
+
|
|
2288
2146
|
/**
|
|
2289
2147
|
* Formats reading for CSV
|
|
2290
2148
|
* @param {fs.WriteStream} stream
|
|
@@ -2293,76 +2151,59 @@ function writeHolidayMincha(stream, ev, il) {
|
|
|
2293
2151
|
* @param {boolean} il
|
|
2294
2152
|
* @param {boolean} isParsha
|
|
2295
2153
|
*/
|
|
2296
|
-
|
|
2297
2154
|
function writeCsvLines(stream, ev, reading, il, isParsha) {
|
|
2298
2155
|
var parsha = isParsha ? ev.basename() : getLeyningKeyForEvent(ev, il) || ev.render();
|
|
2299
2156
|
var date = fmtDate(ev.getDate().greg());
|
|
2300
2157
|
var lines = getFullKriyahLines(reading);
|
|
2301
2158
|
lines.forEach(function (s) {
|
|
2302
2159
|
var code = s[0].charCodeAt(0);
|
|
2303
|
-
|
|
2304
2160
|
if (code < 48 || code > 57) {
|
|
2305
2161
|
s[0] = "\"".concat(s[0], "\"");
|
|
2306
2162
|
}
|
|
2307
|
-
|
|
2308
2163
|
stream.write("".concat(date, ",\"").concat(parsha, "\",").concat(s[0], ",\"").concat(s[1], "\",").concat(s[2], "\r\n"));
|
|
2309
2164
|
});
|
|
2310
2165
|
stream.write('\r\n');
|
|
2311
2166
|
}
|
|
2167
|
+
|
|
2312
2168
|
/**
|
|
2313
2169
|
* @private
|
|
2314
2170
|
* @param {any} reading
|
|
2315
2171
|
* @return {any[]}
|
|
2316
2172
|
*/
|
|
2317
|
-
|
|
2318
2173
|
function getFullKriyahLines(reading) {
|
|
2319
2174
|
var lines = [];
|
|
2320
|
-
|
|
2321
2175
|
if (reading.fullkriyah) {
|
|
2322
2176
|
Object.keys(reading.fullkriyah).forEach(function (num) {
|
|
2323
2177
|
var a = reading.fullkriyah[num];
|
|
2324
|
-
|
|
2325
2178
|
if (typeof a !== 'undefined') {
|
|
2326
2179
|
var _reading$reason;
|
|
2327
|
-
|
|
2328
2180
|
var k = num == 'M' ? 'maf' : num;
|
|
2329
2181
|
var aliyah = formatAliyahWithBook(a);
|
|
2330
|
-
|
|
2331
2182
|
if ((_reading$reason = reading.reason) !== null && _reading$reason !== void 0 && _reading$reason[num]) {
|
|
2332
2183
|
aliyah += ' | ' + reading.reason[num];
|
|
2333
2184
|
}
|
|
2334
|
-
|
|
2335
2185
|
lines.push([k, aliyah, a.v || '']);
|
|
2336
2186
|
}
|
|
2337
2187
|
});
|
|
2338
2188
|
}
|
|
2339
|
-
|
|
2340
2189
|
var specialHaftara = false;
|
|
2341
|
-
|
|
2342
2190
|
if (reading.haftara) {
|
|
2343
2191
|
var _reading$reason2;
|
|
2344
|
-
|
|
2345
2192
|
var haftara = reading.haftara.replace(/,/g, ';');
|
|
2346
|
-
|
|
2347
2193
|
if ((_reading$reason2 = reading.reason) !== null && _reading$reason2 !== void 0 && _reading$reason2.haftara) {
|
|
2348
2194
|
specialHaftara = true;
|
|
2349
2195
|
haftara += ' | ' + reading.reason.haftara;
|
|
2350
2196
|
}
|
|
2351
|
-
|
|
2352
2197
|
lines.push(['Haftara', haftara, reading.haftaraNumV || '']);
|
|
2353
2198
|
}
|
|
2354
|
-
|
|
2355
2199
|
if (reading.sephardic && !specialHaftara) {
|
|
2356
2200
|
var sephardic = reading.sephardic.replace(/,/g, ';');
|
|
2357
2201
|
lines.push(['Haftara for Sephardim', sephardic, reading.sephardicNumV || '']);
|
|
2358
2202
|
}
|
|
2359
|
-
|
|
2360
2203
|
if (reading.triHaftara) {
|
|
2361
2204
|
var _haftara = reading.triHaftara.replace(/,/g, ';');
|
|
2362
|
-
|
|
2363
2205
|
lines.push(['Alternate Haftara', _haftara, reading.triHaftaraNumV || '']);
|
|
2364
2206
|
}
|
|
2365
|
-
|
|
2366
2207
|
return lines;
|
|
2367
2208
|
}
|
|
2368
2209
|
|
|
@@ -2392,8 +2233,6 @@ exports.writeCsvLines = writeCsvLines;
|
|
|
2392
2233
|
exports.writeFullKriyahCsv = writeFullKriyahCsv;
|
|
2393
2234
|
exports.writeHolidayMincha = writeHolidayMincha;
|
|
2394
2235
|
|
|
2395
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2396
|
-
|
|
2397
2236
|
return exports;
|
|
2398
2237
|
|
|
2399
2238
|
})({}, hebcal);
|