@hebcal/leyning 5.1.0 → 6.0.1

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 CHANGED
@@ -3,27 +3,10 @@ Javascript Torah Reading API for Parashat HaShavua and holidays
3
3
 
4
4
  [![Build Status](https://circleci.com/gh/hebcal/hebcal-leyning.svg?style=svg)](https://circleci.com/gh/hebcal/hebcal-leyning)
5
5
 
6
- This package includes both traditional (full kriyah), triennial and weekday
6
+ This package includes both traditional (full kriyah) and weekday
7
7
  Torah readings.
8
8
 
9
- “Many congregations pattern their weekly Torah reading cycle after a system
10
- similar to the one used in ancient Israel during the rabbinic period. In
11
- this system, the traditional parashiot are each divided into three shorter
12
- segments, and the whole Torah is completed once every three years. The
13
- system has both advantages and disadvantages, but its ability to shorten
14
- the length of Torah reading without sacrificing the complete reading of the
15
- Torah on a regular basis has made it the choice of some synagogues in the
16
- Conservative Movement.”
17
-
18
- [A Complete Triennial System for Reading the Torah, Committee on Jewish Law and Standards of the Rabbinical Assembly](https://www.rabbinicalassembly.org/sites/default/files/public/halakhah/teshuvot/19861990/eisenberg_triennial.pdf)
19
-
20
- Update December 2021: In November 2020, the CJLS modified the triennial
21
- cycle for some combined parshiyot to change the reading for year 3 to be
22
- the third section of the parashah.
23
-
24
- [Modification of the Triennial Cycle Readings for Combined Parashot in Certain Years](https://www.rabbinicalassembly.org/sites/default/files/2021-09/cohen-triennial.pdf), Rabbi Miles B. Cohen
25
-
26
- Update August 2022: Incorporated [An Emendation to Richard Eisenberg’s Complete Triennial System for Reading Torah, to Address a Rare Situation](https://www.rabbinicalassembly.org/sites/default/files/public/halakhah/teshuvot/2011-2020/heller-triennial-emendation.pdf), Rabbi Joshua Heller, 2012
9
+ Triennial Torah Readings have moved to [@hebcal/triennial](https://github.com/hebcal/hebcal-triennial)
27
10
 
28
11
  ## Installation
29
12
  ```bash
@@ -33,8 +16,7 @@ $ npm install @hebcal/leyning
33
16
  ## Synopsis
34
17
  ```javascript
35
18
  import {HebrewCalendar, HDate, Event} from '@hebcal/core';
36
- import {getLeyningForParshaHaShavua, getTriennialForParshaHaShavua,
37
- formatAliyahWithBook} from '@hebcal/leyning';
19
+ import {getLeyningForParshaHaShavua, formatAliyahWithBook} from '@hebcal/leyning';
38
20
 
39
21
  const events = HebrewCalendar.calendar({sedrot: true, noHolidays: true});
40
22
  const ev = events.find((ev) => ev.getDesc() == 'Parashat Pinchas');
@@ -50,22 +32,8 @@ for (const [num, aliyah] of Object.entries(reading.fullkriyah)) {
50
32
  str += ` (${aliyah.v} verses)`;
51
33
  console.log(`${number}: ${str}`);
52
34
  }
53
- const triReading = getTriennialForParshaHaShavua(ev);
54
- for (const [num, aliyah] of Object.entries(triReading)) {
55
- const number = num == 'M' ? 'maftir' : `aliyah ${num}`;
56
- const str = formatAliyahWithBook(aliyah);
57
- console.log(`Triennial ${number}: ${str}`);
58
- }
59
35
  ```
60
36
 
61
- ## Classes
62
-
63
- <dl>
64
- <dt><a href="#Triennial">Triennial</a></dt>
65
- <dd><p>Triennial Torah readings</p>
66
- </dd>
67
- </dl>
68
-
69
37
  ## Constants
70
38
 
71
39
  <dl>
@@ -77,12 +45,40 @@ for (const [num, aliyah] of Object.entries(triReading)) {
77
45
  ## Functions
78
46
 
79
47
  <dl>
48
+ <dt><a href="#parshaToString">parshaToString(parsha)</a> ⇒ <code>string</code></dt>
49
+ <dd><p>Formats parsha as a string</p>
50
+ </dd>
51
+ <dt><a href="#clone">clone(src)</a> ⇒ <code>any</code></dt>
52
+ <dd><p>Makes a deep copy of the src object using JSON stringify and parse</p>
53
+ </dd>
54
+ <dt><a href="#calculateNumVerses">calculateNumVerses(aliyah)</a> ⇒ <code>number</code></dt>
55
+ <dd><p>Calculates the number of verses in an aliyah or haftara based on
56
+ the <code>b</code> (begin verse), <code>e</code> (end verse) and <code>k</code> (book).
57
+ Modifies <code>aliyah</code> by setting the <code>v</code> field.</p>
58
+ </dd>
80
59
  <dt><a href="#formatAliyahWithBook">formatAliyahWithBook(a)</a> ⇒ <code>string</code></dt>
81
60
  <dd><p>Formats an aliyah object like &quot;Numbers 28:9-28:15&quot;</p>
82
61
  </dd>
83
62
  <dt><a href="#formatAliyahShort">formatAliyahShort(aliyah, showBook)</a> ⇒ <code>string</code></dt>
84
63
  <dd><p>Formats an aliyah object like &quot;Numbers 28:9-15&quot;</p>
85
64
  </dd>
65
+ <dt><a href="#sumVerses">sumVerses(aliyot)</a> ⇒ <code>number</code></dt>
66
+ <dd><p>Returns the total number of verses in an array of Aliyah (or haftarah) objects</p>
67
+ </dd>
68
+ <dt><a href="#makeLeyningParts">makeLeyningParts(aliyot)</a> ⇒ <code><a href="#Aliyah">Array.&lt;Aliyah&gt;</a></code></dt>
69
+ <dd><p>Summarizes an <code>AliyotMap</code> by collapsing all adjacent aliyot.
70
+ Finds any non-overlapping parts (e.g. special 7th aliyah or maftir)</p>
71
+ </dd>
72
+ <dt><a href="#makeSummaryFromParts">makeSummaryFromParts(parts)</a> ⇒ <code>string</code></dt>
73
+ <dd><p>Returns a string representation of the leyning parts.
74
+ Separate verse ranges read from the same book are separated
75
+ by commas, e.g. <code>Isaiah 6:1-7:6, 9:5-6</code>.
76
+ Verse ranges from different books are separated by semicolons,
77
+ e.g. <code>Genesis 21:1-34; Numbers 29:1-6</code>.</p>
78
+ </dd>
79
+ <dt><a href="#makeLeyningSummary">makeLeyningSummary(aliyot)</a> ⇒ <code>string</code></dt>
80
+ <dd><p>Makes a summary of the leyning, like &quot;Genesis 6:9-11:32&quot;</p>
81
+ </dd>
86
82
  <dt><a href="#hasFestival">hasFestival(holiday)</a> ⇒ <code>boolean</code></dt>
87
83
  <dd><p>Is there a special festival Torah Reading for <code>holiday</code>?</p>
88
84
  </dd>
@@ -92,13 +88,19 @@ for (const [num, aliyah] of Object.entries(triReading)) {
92
88
  <dt><a href="#getLeyningKeyForEvent">getLeyningKeyForEvent(ev, [il])</a> ⇒ <code>string</code></dt>
93
89
  <dd><p>Based on the event date, type and title, finds the relevant leyning key</p>
94
90
  </dd>
91
+ <dt><a href="#specialReadings">specialReadings(hd, il, aliyot, reason)</a> ⇒ <code><a href="#Aliyah">Aliyah</a></code> | <code><a href="#Aliyah">Array.&lt;Aliyah&gt;</a></code></dt>
92
+ <dd><p>Determines if the regular parashat haShavua coincides with an event that requires
93
+ a special maftir or Haftara (for example Shabbat HaGadol, Shabbat Chanukah, Rosh
94
+ Chodesh or Machar Chodesh, etc.).</p>
95
+ <p>If a special maftir occurs, modifies <code>aliyot</code> to replace <code>M</code> and sets <code>reason.M</code>
96
+ (and in some cases modifies the 6th and 7th aliyah, setting <code>reason[&#39;7&#39;]</code>).</p>
97
+ <p>If a special Haftarah applies, returns the Haftarah object and sets <code>reason.haftara</code>.
98
+ If no special Haftarah, returns <code>undefined</code></p>
99
+ </dd>
95
100
  <dt><a href="#getLeyningForHoliday">getLeyningForHoliday(ev, [il])</a> ⇒ <code><a href="#Leyning">Leyning</a></code></dt>
96
101
  <dd><p>Looks up leyning for a given holiday. Returns some
97
102
  of full kriyah aliyot, special Maftir, special Haftarah</p>
98
103
  </dd>
99
- <dt><a href="#makeLeyningSummary">makeLeyningSummary(aliyot)</a> ⇒ <code>string</code></dt>
100
- <dd><p>Makes a summary of the leyning, like &quot;Genesis 6:9-11:32&quot;</p>
101
- </dd>
102
104
  <dt><a href="#getLeyningForHolidayKey">getLeyningForHolidayKey(key, [cholHaMoedDay])</a> ⇒ <code><a href="#Leyning">Leyning</a></code></dt>
103
105
  <dd><p>Looks up leyning for a given holiday key. Key should be an
104
106
  (untranslated) string used in holiday-readings.json. Returns some
@@ -123,14 +125,8 @@ Parashat haShavua, containing only the <code>weekday</code> aliyot (no <code>ful
123
125
  <dt><a href="#lookupParsha">lookupParsha(parsha)</a> ⇒ <code><a href="#ParshaMeta">ParshaMeta</a></code></dt>
124
126
  <dd><p>Returns the parsha metadata</p>
125
127
  </dd>
126
- <dt><a href="#getTriennial">getTriennial(year)</a> ⇒ <code><a href="#Triennial">Triennial</a></code></dt>
127
- <dd><p>Calculates the 3-year readings for a given year</p>
128
- </dd>
129
- <dt><a href="#getTriennialForParshaHaShavua">getTriennialForParshaHaShavua(ev)</a> ⇒ <code><a href="#TriennialAliyot">TriennialAliyot</a></code></dt>
130
- <dd><p>Looks up the triennial leyning for this Parashat HaShavua</p>
131
- </dd>
132
- <dt><a href="#getTriennialHaftaraForHoliday">getTriennialHaftaraForHoliday(key, yearNum)</a> ⇒ <code>Object</code></dt>
133
- <dd><p>Looks up the alternative triennial Haftara for a holiday</p>
128
+ <dt><a href="#writeCsvLines">writeCsvLines(stream, ev, reading, il, isParsha)</a></dt>
129
+ <dd><p>Formats reading for CSV</p>
134
130
  </dd>
135
131
  </dl>
136
132
 
@@ -149,86 +145,50 @@ Parashat haShavua, containing only the <code>weekday</code> aliyot (no <code>ful
149
145
  <dt><a href="#ParshaMeta">ParshaMeta</a> : <code>Object</code></dt>
150
146
  <dd><p>Parsha metadata</p>
151
147
  </dd>
152
- <dt><a href="#TriennialAliyot">TriennialAliyot</a> : <code>Object</code></dt>
153
- <dd><p>Represents triennial aliyot for a given date</p>
154
- </dd>
155
148
  </dl>
156
149
 
157
- <a name="Triennial"></a>
158
-
159
- ## Triennial
160
- Triennial Torah readings
161
-
162
- **Kind**: global class
163
-
164
- * [Triennial](#Triennial)
165
- * [new Triennial([hebrewYear])](#new_Triennial_new)
166
- * _instance_
167
- * [.getReading(parsha, yearNum)](#Triennial+getReading) ⇒ <code>Object.&lt;string, Aliyah&gt;</code>
168
- * [.getStartYear()](#Triennial+getStartYear) ⇒ <code>number</code>
169
- * [.debug()](#Triennial+debug) ⇒ <code>string</code>
170
- * _static_
171
- * [.getYearNumber(year)](#Triennial.getYearNumber) ⇒ <code>number</code>
172
- * [.getCycleStartYear(year)](#Triennial.getCycleStartYear) ⇒ <code>number</code>
173
-
174
- <a name="new_Triennial_new"></a>
175
-
176
- ### new Triennial([hebrewYear])
177
- Builds a Triennial object
178
-
179
-
180
- | Param | Type | Description |
181
- | --- | --- | --- |
182
- | [hebrewYear] | <code>number</code> | Hebrew Year (default current year) |
183
-
184
- <a name="Triennial+getReading"></a>
150
+ <a name="BOOK"></a>
185
151
 
186
- ### triennial.getReading(parsha, yearNum) ⇒ <code>Object.&lt;string, Aliyah&gt;</code>
187
- **Kind**: instance method of [<code>Triennial</code>](#Triennial)
188
- **Returns**: <code>Object.&lt;string, Aliyah&gt;</code> - a map of aliyot 1-7 plus "M"
152
+ ## BOOK : <code>Array.&lt;string&gt;</code>
153
+ Names of the books of the Torah. BOOK[1] === 'Genesis'
189
154
 
190
- | Param | Type | Description |
191
- | --- | --- | --- |
192
- | parsha | <code>string</code> | parsha name ("Bereshit" or "Achrei Mot-Kedoshim") |
193
- | yearNum | <code>number</code> | 0 through 2 for which year of Triennial cycle |
155
+ **Kind**: global constant
156
+ **Read only**: true
157
+ <a name="parshaToString"></a>
194
158
 
195
- <a name="Triennial+getStartYear"></a>
159
+ ## parshaToString(parsha) ⇒ <code>string</code>
160
+ Formats parsha as a string
196
161
 
197
- ### triennial.getStartYear() ⇒ <code>number</code>
198
- **Kind**: instance method of [<code>Triennial</code>](#Triennial)
199
- <a name="Triennial+debug"></a>
162
+ **Kind**: global function
200
163
 
201
- ### triennial.debug() ⇒ <code>string</code>
202
- **Kind**: instance method of [<code>Triennial</code>](#Triennial)
203
- <a name="Triennial.getYearNumber"></a>
164
+ | Param | Type |
165
+ | --- | --- |
166
+ | parsha | <code>Array.&lt;string&gt;</code> |
204
167
 
205
- ### Triennial.getYearNumber(year) ⇒ <code>number</code>
206
- Returns triennial year 1, 2 or 3 based on this Hebrew year
168
+ <a name="clone"></a>
207
169
 
208
- **Kind**: static method of [<code>Triennial</code>](#Triennial)
170
+ ## clone(src) ⇒ <code>any</code>
171
+ Makes a deep copy of the src object using JSON stringify and parse
209
172
 
210
- | Param | Type | Description |
211
- | --- | --- | --- |
212
- | year | <code>number</code> | Hebrew year |
173
+ **Kind**: global function
213
174
 
214
- <a name="Triennial.getCycleStartYear"></a>
175
+ | Param | Type |
176
+ | --- | --- |
177
+ | src | <code>any</code> |
215
178
 
216
- ### Triennial.getCycleStartYear(year) ⇒ <code>number</code>
217
- Returns Hebrew year that this 3-year triennial cycle began
179
+ <a name="calculateNumVerses"></a>
218
180
 
219
- **Kind**: static method of [<code>Triennial</code>](#Triennial)
181
+ ## calculateNumVerses(aliyah) ⇒ <code>number</code>
182
+ Calculates the number of verses in an aliyah or haftara based on
183
+ the `b` (begin verse), `e` (end verse) and `k` (book).
184
+ Modifies `aliyah` by setting the `v` field.
220
185
 
221
- | Param | Type | Description |
222
- | --- | --- | --- |
223
- | year | <code>number</code> | Hebrew year |
224
-
225
- <a name="BOOK"></a>
186
+ **Kind**: global function
226
187
 
227
- ## BOOK : <code>Array.&lt;string&gt;</code>
228
- Names of the books of the Torah. BOOK[1] === 'Genesis'
188
+ | Param | Type |
189
+ | --- | --- |
190
+ | aliyah | [<code>Aliyah</code>](#Aliyah) |
229
191
 
230
- **Kind**: global constant
231
- **Read only**: true
232
192
  <a name="formatAliyahWithBook"></a>
233
193
 
234
194
  ## formatAliyahWithBook(a) ⇒ <code>string</code>
@@ -252,6 +212,55 @@ Formats an aliyah object like "Numbers 28:9-15"
252
212
  | aliyah | [<code>Aliyah</code>](#Aliyah) |
253
213
  | showBook | <code>boolean</code> |
254
214
 
215
+ <a name="sumVerses"></a>
216
+
217
+ ## sumVerses(aliyot) ⇒ <code>number</code>
218
+ Returns the total number of verses in an array of Aliyah (or haftarah) objects
219
+
220
+ **Kind**: global function
221
+
222
+ | Param | Type |
223
+ | --- | --- |
224
+ | aliyot | [<code>Aliyah</code>](#Aliyah) \| [<code>Array.&lt;Aliyah&gt;</code>](#Aliyah) |
225
+
226
+ <a name="makeLeyningParts"></a>
227
+
228
+ ## makeLeyningParts(aliyot) ⇒ [<code>Array.&lt;Aliyah&gt;</code>](#Aliyah)
229
+ Summarizes an `AliyotMap` by collapsing all adjacent aliyot.
230
+ Finds any non-overlapping parts (e.g. special 7th aliyah or maftir)
231
+
232
+ **Kind**: global function
233
+
234
+ | Param | Type |
235
+ | --- | --- |
236
+ | aliyot | <code>Object.&lt;string, Aliyah&gt;</code> |
237
+
238
+ <a name="makeSummaryFromParts"></a>
239
+
240
+ ## makeSummaryFromParts(parts) ⇒ <code>string</code>
241
+ Returns a string representation of the leyning parts.
242
+ Separate verse ranges read from the same book are separated
243
+ by commas, e.g. `Isaiah 6:1-7:6, 9:5-6`.
244
+ Verse ranges from different books are separated by semicolons,
245
+ e.g. `Genesis 21:1-34; Numbers 29:1-6`.
246
+
247
+ **Kind**: global function
248
+
249
+ | Param | Type |
250
+ | --- | --- |
251
+ | parts | [<code>Aliyah</code>](#Aliyah) \| [<code>Array.&lt;Aliyah&gt;</code>](#Aliyah) |
252
+
253
+ <a name="makeLeyningSummary"></a>
254
+
255
+ ## makeLeyningSummary(aliyot) ⇒ <code>string</code>
256
+ Makes a summary of the leyning, like "Genesis 6:9-11:32"
257
+
258
+ **Kind**: global function
259
+
260
+ | Param | Type |
261
+ | --- | --- |
262
+ | aliyot | <code>Object.&lt;string, Aliyah&gt;</code> |
263
+
255
264
  <a name="hasFestival"></a>
256
265
 
257
266
  ## hasFestival(holiday) ⇒ <code>boolean</code>
@@ -287,6 +296,28 @@ Based on the event date, type and title, finds the relevant leyning key
287
296
  | ev | <code>Event</code> | | event |
288
297
  | [il] | <code>boolean</code> | <code>false</code> | true if Israel holiday scheme |
289
298
 
299
+ <a name="specialReadings"></a>
300
+
301
+ ## specialReadings(hd, il, aliyot, reason) ⇒ [<code>Aliyah</code>](#Aliyah) \| [<code>Array.&lt;Aliyah&gt;</code>](#Aliyah)
302
+ Determines if the regular parashat haShavua coincides with an event that requires
303
+ a special maftir or Haftara (for example Shabbat HaGadol, Shabbat Chanukah, Rosh
304
+ Chodesh or Machar Chodesh, etc.).
305
+
306
+ If a special maftir occurs, modifies `aliyot` to replace `M` and sets `reason.M`
307
+ (and in some cases modifies the 6th and 7th aliyah, setting `reason['7']`).
308
+
309
+ If a special Haftarah applies, returns the Haftarah object and sets `reason.haftara`.
310
+ If no special Haftarah, returns `undefined`
311
+
312
+ **Kind**: global function
313
+
314
+ | Param | Type |
315
+ | --- | --- |
316
+ | hd | <code>HDate</code> |
317
+ | il | <code>boolean</code> |
318
+ | aliyot | <code>Object.&lt;string, Aliyah&gt;</code> |
319
+ | reason | <code>Object.&lt;string, string&gt;</code> |
320
+
290
321
  <a name="getLeyningForHoliday"></a>
291
322
 
292
323
  ## getLeyningForHoliday(ev, [il]) ⇒ [<code>Leyning</code>](#Leyning)
@@ -301,17 +332,6 @@ of full kriyah aliyot, special Maftir, special Haftarah
301
332
  | ev | <code>Event</code> | | the Hebcal event associated with this leyning |
302
333
  | [il] | <code>boolean</code> | <code>false</code> | true if Israel holiday scheme |
303
334
 
304
- <a name="makeLeyningSummary"></a>
305
-
306
- ## makeLeyningSummary(aliyot) ⇒ <code>string</code>
307
- Makes a summary of the leyning, like "Genesis 6:9-11:32"
308
-
309
- **Kind**: global function
310
-
311
- | Param | Type |
312
- | --- | --- |
313
- | aliyot | <code>Object.&lt;string, Aliyah&gt;</code> |
314
-
315
335
  <a name="getLeyningForHolidayKey"></a>
316
336
 
317
337
  ## getLeyningForHolidayKey(key, [cholHaMoedDay]) ⇒ [<code>Leyning</code>](#Leyning)
@@ -391,40 +411,20 @@ Returns the parsha metadata
391
411
  | --- | --- |
392
412
  | parsha | <code>string</code> \| <code>Array.&lt;string&gt;</code> |
393
413
 
394
- <a name="getTriennial"></a>
414
+ <a name="writeCsvLines"></a>
395
415
 
396
- ## getTriennial(year) ⇒ [<code>Triennial</code>](#Triennial)
397
- Calculates the 3-year readings for a given year
416
+ ## writeCsvLines(stream, ev, reading, il, isParsha)
417
+ Formats reading for CSV
398
418
 
399
419
  **Kind**: global function
400
420
 
401
- | Param | Type | Description |
402
- | --- | --- | --- |
403
- | year | <code>number</code> | Hebrew year |
404
-
405
- <a name="getTriennialForParshaHaShavua"></a>
406
-
407
- ## getTriennialForParshaHaShavua(ev) ⇒ [<code>TriennialAliyot</code>](#TriennialAliyot)
408
- Looks up the triennial leyning for this Parashat HaShavua
409
-
410
- **Kind**: global function
411
- **Returns**: [<code>TriennialAliyot</code>](#TriennialAliyot) - a map of aliyot 1-7 plus "M"
412
-
413
421
  | Param | Type |
414
422
  | --- | --- |
423
+ | stream | <code>fs.WriteStream</code> |
415
424
  | ev | <code>Event</code> |
416
-
417
- <a name="getTriennialHaftaraForHoliday"></a>
418
-
419
- ## getTriennialHaftaraForHoliday(key, yearNum) ⇒ <code>Object</code>
420
- Looks up the alternative triennial Haftara for a holiday
421
-
422
- **Kind**: global function
423
-
424
- | Param | Type |
425
- | --- | --- |
426
- | key | <code>string</code> |
427
- | yearNum | <code>number</code> |
425
+ | reading | [<code>Leyning</code>](#Leyning) |
426
+ | il | <code>boolean</code> |
427
+ | isParsha | <code>boolean</code> |
428
428
 
429
429
  <a name="Aliyah"></a>
430
430
 
@@ -496,20 +496,3 @@ Parsha metadata
496
496
  | [seph] | [<code>Aliyah</code>](#Aliyah) \| [<code>Array.&lt;Aliyah&gt;</code>](#Aliyah) | Haftarah object(s) for Sephardim |
497
497
  | fullkriyah | <code>Object.&lt;string, Array.&lt;string&gt;&gt;</code> | Map of aliyot `1` through `7` plus `M` for maftir |
498
498
  | weekday | <code>Object.&lt;string, Array.&lt;string&gt;&gt;</code> | Map of weekday Torah Readings aliyot `1` through `3` for Monday and Thursday |
499
-
500
- <a name="TriennialAliyot"></a>
501
-
502
- ## TriennialAliyot : <code>Object</code>
503
- Represents triennial aliyot for a given date
504
-
505
- **Kind**: global typedef
506
- **Properties**
507
-
508
- | Name | Type | Description |
509
- | --- | --- | --- |
510
- | aliyot | <code>Object.&lt;string, Aliyah&gt;</code> | a map of aliyot 1-7 plus "M" |
511
- | yearNum | <code>number</code> | year number, 0-2 |
512
- | date | <code>Date</code> | Shabbat date for when this parsha is read in this 3-year cycle |
513
- | [readSeparately] | <code>boolean</code> | true if a double parsha is read separately in year `yearNum` |
514
- | [date1] | <code>Date</code> | Shabbat date of the first part of a read-separately aliyah pair |
515
- | [date2] | <code>Date</code> | Shabbat date of the second part of a read-separately aliyah pair |