@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) and k
(book).
Modifies aliyah
by setting the v
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
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
.
- 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 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
.
- 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
BOOK : Array.<string>
Names of the books of the Torah. BOOK[1] === 'Genesis'
Kind: global constant
Read only: true
parshaToString(parsha) ⇒ string
Formats parsha as a string
Kind: global function
Param | Type | Description |
---|
parsha | string | Array.<string> | untranslated name like 'Pinchas' or ['Pinchas'] or ['Matot','Masei'] |
clone(src) ⇒ any
Makes a deep copy of the src object using JSON stringify and parse
Kind: global function
calculateNumVerses(aliyah) ⇒ number
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
formatAliyahWithBook(a) ⇒ string
Formats an aliyah object like "Numbers 28:9-28:15"
Kind: global function
Param | Type | Description |
---|
a | Aliyah | aliyah |
formatAliyahShort(aliyah, showBook) ⇒ string
Formats an aliyah object like "Numbers 28:9-15"
Kind: global function
Param | Type |
---|
aliyah | Aliyah |
showBook | boolean |
sumVerses(aliyot) ⇒ number
Returns the total number of verses in an array of Aliyah (or haftarah) objects
Kind: global function
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> |
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
.
Kind: global function
makeLeyningSummary(aliyot) ⇒ string
Makes a summary of the leyning, like "Genesis 6:9-11:32"
Kind: global function
Param | Type |
---|
aliyot | Object.<string, Aliyah> |
hasFestival(holiday) ⇒ boolean
Is there a special festival Torah Reading for holiday
?
Kind: global function
lookupFestival(holiday) ⇒ any
Returns the raw metadata for festival reading for holiday
Kind: global function
getLeyningKeyForEvent(ev, [il]) ⇒ string
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 |
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
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> |
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
Kind: global function
Returns: Leyning
- map of aliyot
Param | Type | Description |
---|
key | string | name from holiday-readings.json to find |
[cholHaMoedDay] | number | |
[il] | boolean | |
getLeyningForHoliday(ev, [il]) ⇒ Leyning
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 |
makeLeyningNames(parsha) ⇒ LeyningNames
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'] |
getWeekdayReading(parsha) ⇒ Object.<string, Aliyah>
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'] |
getLeyningForParsha(parsha) ⇒ Leyning
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'] |
getLeyningForParshaHaShavua(ev, [il]) ⇒ Leyning
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 |
lookupParsha(parsha) ⇒ ParshaMeta
Returns the parsha metadata
Kind: global function
Param | Type | Description |
---|
parsha | string | Array.<string> | untranslated name like 'Pinchas' or ['Pinchas'] or ['Matot','Masei'] |
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 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 |
Aliyah : Object
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) |
SpecialReading : Object
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) |
LeyningNames : Object
Name of the parsha hashavua or holiday
Kind: global typedef
Properties
Name | Type | Description |
---|
en | string | English |
he | string | Hebrew (with nikud) |
Leyning : Object
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. |
ParshaMeta : Object
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 |