@hebcal/leyning
Javascript Torah Reading API for Parashat HaShavua and holidays
This package includes both traditional (full kriyah) and weekday Torah readings.
Triennial Torah Readings have moved to @hebcal/triennial
Installation
$ npm install @hebcal/leyning
Synopsis
import {HebrewCalendar, HDate, Event} from '@hebcal/core';
import {getLeyningForParshaHaShavua, formatAliyahWithBook} from '@hebcal/leyning';
const events = HebrewCalendar.calendar({sedrot: true, noHolidays: true});
const ev = events.find((ev) => ev.getDesc() == 'Parashat Pinchas');
const reading = getLeyningForParshaHaShavua(ev, false);
console.log(`${ev.getDesc()}: ${reading.summary}`);
console.log(`Haftara: ${reading.haftara}`);
for (const [num, aliyah] of Object.entries(reading.fullkriyah)) {
const number = num == 'M' ? 'maftir' : `aliyah ${num}`;
let str = formatAliyahWithBook(aliyah);
if (reading.reason[num]) {
str += ' | ' + reading.reason[num];
}
str += ` (${aliyah.v} verses)`;
console.log(`${number}: ${str}`);
}
Constants
- BOOK :
Array.<string>
Names of the books of the Torah. BOOK[1] === 'Genesis'
Functions
- parshaToString(parsha) ⇒
string
Formats parsha as a string
- clone(src) ⇒
any
Makes a deep copy of the src object using JSON stringify and parse
- calculateNumVerses(aliyah) ⇒
number
Calculates the number of verses in an aliyah or haftara based on the
b
(begin verse),e
(end verse) andk
(book). Modifiesaliyah
by setting thev
field.- formatAliyahWithBook(a) ⇒
string
Formats an aliyah object like "Numbers 28:9-28:15"
- formatAliyahShort(aliyah, showBook) ⇒
string
Formats an aliyah object like "Numbers 28:9-15"
- sumVerses(aliyot) ⇒
number
Returns the total number of verses in an array of Aliyah (or haftarah) objects
- makeLeyningParts(aliyot) ⇒
Array.<Aliyah>
Summarizes an
AliyotMap
by collapsing all adjacent aliyot. Finds any non-overlapping parts (e.g. special 7th aliyah or maftir)- makeSummaryFromParts(parts) ⇒
string
Returns a string representation of the leyning parts. Separate verse ranges read from the same book are separated by commas, e.g.
Isaiah 6:1-7:6, 9:5-6
. Verse ranges from different books are separated by semicolons, e.g.Genesis 21:1-34; Numbers 29:1-6
.- makeLeyningSummary(aliyot) ⇒
string
Makes a summary of the leyning, like "Genesis 6:9-11:32"
- hasFestival(holiday) ⇒
boolean
Is there a special festival Torah Reading for
holiday
?- lookupFestival(holiday) ⇒
any
Returns the raw metadata for festival reading for
holiday
- getLeyningKeyForEvent(ev, [il]) ⇒
string
Based on the event date, type and title, finds the relevant leyning key
- specialReadings2(parsha, hd, il, aliyot) ⇒
SpecialReading
Determines if the regular parashat haShavua coincides with an event that requires a special maftir or Haftara (for example Shabbat HaGadol, Shabbat Chanukah, Rosh Chodesh or Machar Chodesh, etc.).
This function does not modify
aliyot
. Instead, it returns a deep copy withaliyot['M']
replaced and setsreason.M
(and in some cases the 6th and 7th aliyah, settingreason['7']
).If a special Haftarah applies, the result will have a
haft
property pointing to Haftarah object and setsreason.haftara
.- getLeyningForHolidayKey(key, [cholHaMoedDay], [il]) ⇒
Leyning
Looks up leyning for a given holiday key. Key should be an (untranslated) string used in holiday-readings.json. Returns some of full kriyah aliyot, special Maftir, special Haftarah
- getLeyningForHoliday(ev, [il]) ⇒
Leyning
Looks up leyning for a given holiday. Returns some of full kriyah aliyot, special Maftir, special Haftarah
- makeLeyningNames(parsha) ⇒
LeyningNames
Transliterated English and Hebrew names of this parsha
- getWeekdayReading(parsha) ⇒
Object.<string, Aliyah>
Looks up Monday/Thursday aliyot for a regular parsha
- getLeyningForParsha(parsha) ⇒
Leyning
Looks up regular leyning for a weekly parsha with no special readings
- getLeyningForParshaHaShavua(ev, [il]) ⇒
Leyning
Looks up leyning for a regular Shabbat parsha, including any special maftir or Haftara.
- lookupParsha(parsha) ⇒
ParshaMeta
Returns the parsha metadata
- getLeyningOnDate(hdate, il, [wantarray]) ⇒
Leyning
|Array.<Leyning>
Looks up leyning for a regular Shabbat, Monday/Thursday weekday or holiday.
If
hdate
coincides with a holiday that has Torah reading, returns the reading for that day (see getLeyningForHoliday)Otherwise, if
hdate
is a Saturday, returns getLeyningForParshaHaShavuaOtherwise, if
hdate
is a Monday or Thursday, returns Leyning for the Parashat haShavua, containing only theweekday
aliyot (nofullkriyah
).Otherwise, returns
undefined
.- writeCsvLines(stream, ev, reading, il, isParsha)
Formats reading for CSV
Typedefs
- Aliyah :
Object
Represents an aliyah
- SpecialReading :
Object
Leyning for a parsha hashavua or holiday
- LeyningNames :
Object
Name of the parsha hashavua or holiday
- Leyning :
Object
Leyning for a parsha hashavua or holiday
- ParshaMeta :
Object
Parsha metadata
Array.<string>
BOOK : Names of the books of the Torah. BOOK[1] === 'Genesis'
Kind: global constant
Read only: true
string
parshaToString(parsha) ⇒ Formats parsha as a string
Kind: global function
Param | Type | Description |
---|---|---|
parsha | string | Array.<string> |
untranslated name like 'Pinchas' or ['Pinchas'] or ['Matot','Masei'] |
any
clone(src) ⇒ Makes a deep copy of the src object using JSON stringify and parse
Kind: global function
Param | Type |
---|---|
src | any |
number
calculateNumVerses(aliyah) ⇒ Calculates the number of verses in an aliyah or haftara based on
the b
(begin verse), e
(end verse) and k
(book).
Modifies aliyah
by setting the v
field.
Kind: global function
Param | Type |
---|---|
aliyah | Aliyah |
string
formatAliyahWithBook(a) ⇒ Formats an aliyah object like "Numbers 28:9-28:15"
Kind: global function
Param | Type | Description |
---|---|---|
a | Aliyah |
aliyah |
string
formatAliyahShort(aliyah, showBook) ⇒ Formats an aliyah object like "Numbers 28:9-15"
Kind: global function
Param | Type |
---|---|
aliyah | Aliyah |
showBook | boolean |
number
sumVerses(aliyot) ⇒ Returns the total number of verses in an array of Aliyah (or haftarah) objects
Kind: global function
Param | Type |
---|---|
aliyot | Aliyah | Array.<Aliyah> |
Array.<Aliyah>
makeLeyningParts(aliyot) ⇒ Summarizes an AliyotMap
by collapsing all adjacent aliyot.
Finds any non-overlapping parts (e.g. special 7th aliyah or maftir)
Kind: global function
Param | Type |
---|---|
aliyot | Object.<string, Aliyah> |
string
makeSummaryFromParts(parts) ⇒ Returns a string representation of the leyning parts.
Separate verse ranges read from the same book are separated
by commas, e.g. Isaiah 6:1-7:6, 9:5-6
.
Verse ranges from different books are separated by semicolons,
e.g. Genesis 21:1-34; Numbers 29:1-6
.
Kind: global function
Param | Type |
---|---|
parts | Aliyah | Array.<Aliyah> |
string
makeLeyningSummary(aliyot) ⇒ Makes a summary of the leyning, like "Genesis 6:9-11:32"
Kind: global function
Param | Type |
---|---|
aliyot | Object.<string, Aliyah> |
boolean
hasFestival(holiday) ⇒ Is there a special festival Torah Reading for holiday
?
Kind: global function
Param | Type |
---|---|
holiday | string |
any
lookupFestival(holiday) ⇒ Returns the raw metadata for festival reading for holiday
Kind: global function
Param | Type |
---|---|
holiday | string |
string
getLeyningKeyForEvent(ev, [il]) ⇒ Based on the event date, type and title, finds the relevant leyning key
Kind: global function
Returns: string
- key to look up in holiday-reading.json
Param | Type | Default | Description |
---|---|---|---|
ev | Event |
event | |
[il] | boolean |
false |
true if Israel holiday scheme |
SpecialReading
specialReadings2(parsha, hd, il, aliyot) ⇒ Determines if the regular parashat haShavua coincides with an event that requires a special maftir or Haftara (for example Shabbat HaGadol, Shabbat Chanukah, Rosh Chodesh or Machar Chodesh, etc.).
This function does not modify aliyot
. Instead, it returns a deep copy
with aliyot['M']
replaced and sets reason.M
(and in some cases the 6th and 7th aliyah, setting reason['7']
).
If a special Haftarah applies, the result will have a haft
property
pointing to Haftarah object and sets reason.haftara
.
Kind: global function
Param | Type |
---|---|
parsha | Array.<string> |
hd | HDate |
il | boolean |
aliyot | Object.<string, Aliyah> |
Leyning
getLeyningForHolidayKey(key, [cholHaMoedDay], [il]) ⇒ Looks up leyning for a given holiday key. Key should be an (untranslated) string used in holiday-readings.json. Returns some of full kriyah aliyot, special Maftir, special Haftarah
Kind: global function
Returns: Leyning
- map of aliyot
Param | Type | Description |
---|---|---|
key | string |
name from holiday-readings.json to find |
[cholHaMoedDay] | number |
|
[il] | boolean |
Leyning
getLeyningForHoliday(ev, [il]) ⇒ Looks up leyning for a given holiday. Returns some of full kriyah aliyot, special Maftir, special Haftarah
Kind: global function
Returns: Leyning
- map of aliyot
Param | Type | Default | Description |
---|---|---|---|
ev | Event |
the Hebcal event associated with this leyning | |
[il] | boolean |
false |
true if Israel holiday scheme |
LeyningNames
makeLeyningNames(parsha) ⇒ Transliterated English and Hebrew names of this parsha
Kind: global function
Param | Type | Description |
---|---|---|
parsha | string | Array.<string> |
untranslated name like 'Pinchas' or ['Pinchas'] or ['Matot','Masei'] |
Object.<string, Aliyah>
getWeekdayReading(parsha) ⇒ Looks up Monday/Thursday aliyot for a regular parsha
Kind: global function
Returns: Object.<string, Aliyah>
- map of aliyot
Param | Type | Description |
---|---|---|
parsha | string | Array.<string> |
untranslated name like 'Pinchas' or ['Pinchas'] or ['Matot','Masei'] |
Leyning
getLeyningForParsha(parsha) ⇒ Looks up regular leyning for a weekly parsha with no special readings
Kind: global function
Returns: Leyning
- map of aliyot
Param | Type | Description |
---|---|---|
parsha | string | Array.<string> |
untranslated name like 'Pinchas' or ['Pinchas'] or ['Matot','Masei'] |
Leyning
getLeyningForParshaHaShavua(ev, [il]) ⇒ Looks up leyning for a regular Shabbat parsha, including any special maftir or Haftara.
Kind: global function
Returns: Leyning
- map of aliyot
Param | Type | Default | Description |
---|---|---|---|
ev | Event |
the Hebcal event associated with this leyning | |
[il] | boolean |
false |
in Israel |
ParshaMeta
lookupParsha(parsha) ⇒ Returns the parsha metadata
Kind: global function
Param | Type | Description |
---|---|---|
parsha | string | Array.<string> |
untranslated name like 'Pinchas' or ['Pinchas'] or ['Matot','Masei'] |
Leyning
| Array.<Leyning>
getLeyningOnDate(hdate, il, [wantarray]) ⇒ Looks up leyning for a regular Shabbat, Monday/Thursday weekday or holiday.
If hdate
coincides with a holiday that has Torah reading, returns the
reading for that day (see getLeyningForHoliday)
Otherwise, if hdate
is a Saturday, returns getLeyningForParshaHaShavua
Otherwise, if hdate
is a Monday or Thursday, returns Leyning for the
Parashat haShavua, containing only the weekday
aliyot (no fullkriyah
).
Otherwise, returns undefined
.
Kind: global function
Returns: Leyning
| Array.<Leyning>
- map of aliyot
Param | Type | Default | Description |
---|---|---|---|
hdate | HDate |
Hebrew Date | |
il | boolean |
in Israel | |
[wantarray] | boolean |
false |
to return an array of 0 or more readings |
writeCsvLines(stream, ev, reading, il, isParsha)
Formats reading for CSV
Kind: global function
Param | Type |
---|---|
stream | fs.WriteStream |
ev | Event |
reading | Leyning |
il | boolean |
isParsha | boolean |
Object
Aliyah : Represents an aliyah
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
k | string |
Book (e.g. "Numbers") |
b | string |
beginning verse (e.g. "28:9") |
e | string |
ending verse (e.g. "28:15") |
[v] | number |
number of verses |
[p] | number |
parsha number (1=Bereshit, 54=Vezot HaBracha) |
Object
SpecialReading : Leyning for a parsha hashavua or holiday
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
aliyot | Object.<string, Aliyah> |
Map of aliyot 1 through 7 plus M for maftir |
[reason] | Object.<string, string> |
Explanations for special readings, keyed by aliyah number, M for maftir or haftara for Haftarah |
haft | Aliyah | Array.<Aliyah> |
Haftarah object(s) |
seph | Aliyah | Array.<Aliyah> |
Haftarah object(s) |
Object
LeyningNames : Name of the parsha hashavua or holiday
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
en | string |
English |
he | string |
Hebrew (with nikud) |
Object
Leyning : Leyning for a parsha hashavua or holiday
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
name | LeyningNames |
|
[parsha] | Array.<string> |
An array of either 1 (regular) or 2 (doubled parsha). undefined for holiday readings |
[parshaNum] | number | Array.<number> |
1 for Bereshit, 2 for Noach, etc. undefined for holiday readings |
summary | string |
Such as Genesis 1:1 - 6:8 |
haft | Aliyah | Array.<Aliyah> |
Haftarah object(s) |
haftara | string |
Haftarah, such as Isaiah 42:5 – 43:11 |
[haftaraNumV] | number |
Number of verses in the Haftarah |
[seph] | Aliyah | Array.<Aliyah> |
Haftarah object(s) for Sephardim |
[sephardic] | string |
Haftarah for Sephardim, such as Isaiah 42:5 - 42:21 |
[sephardicNumV] | number |
Number of verses in the Haftarah for Sephardim |
fullkriyah | Object.<string, Aliyah> |
Map of aliyot 1 through 7 plus M for maftir |
[weekday] | Object.<string, Aliyah> |
Optional map of weekday Torah Readings aliyot 1 through 3 for Monday and Thursday |
[reason] | Object.<string, string> |
Explanations for special readings, keyed by aliyah number, M for maftir or haftara for Haftarah |
[megillah] | Object.<string, Aliyah> |
Optional map of megillah reading. Song of Songs is read on the sabbath of Passover week, the Book of Ruth on Shavuot, Lamentations on Tisha be-Av, Ecclesiastes on the sabbath of the week of Sukkoth, and the Book of Esther on Purim. |
Object
ParshaMeta : Parsha metadata
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
num | number |
1 for Bereshit, 2 for Noach, etc. undefined for holiday readings |
hebrew | string |
parsha name in Hebrew with niqud |
book | number |
1 for Genesis, 2 for Exodus, 5 for Deuteronomy |
haft | Aliyah | Array.<Aliyah> |
Haftarah object(s) |
[seph] | Aliyah | Array.<Aliyah> |
Haftarah object(s) for Sephardim |
fullkriyah | Object.<string, Array.<string>> |
Map of aliyot 1 through 7 plus M for maftir |
weekday | Object.<string, Array.<string>> |
Map of weekday Torah Readings aliyot 1 through 3 for Monday and Thursday |