A cluster is group of Hebrew character constituted by:

  • an obligatory Hebrew consonant character
  • an optional ligature mark
  • an optional vowel
  • an optional taam

A [[Syllable]] is a linguistic unit, whereas a Cluster is an orthgraphic one. The word יֹו֑ם is only one syllable, but it has three clusters—יֹ, ו֑, ם. Because Hebrew orthography is both sub and supra linear, clusters can be encoded in various ways. Every [[Char]] is sequenced first for normalization, see the SBL Hebrew Font Manual, p.8.

Hierarchy

Constructors

  • Creates a new cluster

    Parameters

    • cluster: string

      the original cluster

    • noSequence: boolean = false

      whether to sequence the cluster

    Returns Cluster

    Example

    const str = "הָ";
    const cluster = new Cluster(str);
    cluster.text;
    // "הָ"

Accessors

  • get chars(): Char[]
  • Gets all the characters in the Cluster

    Returns Char[]

    an array of sequenced Char objects

    Example

    const text = new Text("הֲבָרֹות");
    text.clusters[0].chars;
    // [
    // Char { original: "ה" },
    // Char { original: "ֲ " }, i.e. \u{05B2} (does not print well)
    // ]
  • get consonantNames(): ConsonantName[]
  • Gets all consonant names in the cluster.

    Returns ConsonantName[]

    an array of the consonant names in the cluster

    Example

    const text = new Text("הֲבָרֹות");
    text.clusters[0].consonantNames;
    // ["HE"]

    Warning

    This can only every return one consonant, as a Cluster is defined by having only one consonant. Though it is impossible to have two consonants in a cluster, this api is meant for consistency with vowelNames and taamimNames

  • get consonants(): ("א" | "ב" | "ג" | "ד" | "ה" | "ו" | "ז" | "ח" | "ט" | "י" | "ך" | "כ" | "ל" | "ם" | "מ" | "ן" | "נ" | "ס" | "ע" | "ף" | "פ" | "ץ" | "צ" | "ק" | "ר" | "ש" | "ת")[]
  • Gets all the consonant characters in the cluster

    Returns ("א" | "ב" | "ג" | "ד" | "ה" | "ו" | "ז" | "ח" | "ט" | "י" | "ך" | "כ" | "ל" | "ם" | "מ" | "ן" | "נ" | "ס" | "ע" | "ף" | "פ" | "ץ" | "צ" | "ק" | "ר" | "ש" | "ת")[]

    an array of the consonant characters in the cluster

    Example

    const text = new Text("הֲבָרֹות");
    text.clusters[0].consonants;
    // ["ה"]

    Warning

    This can only every return one consonant, as a Cluster is defined by having only one consonant. Though it is impossible to have two consonants in a cluster, this api is meant for consistency with vowels and taamim

  • get hasHalfVowel(): boolean
  • Checks if the cluster contains a half-vowel

    Returns boolean

    a boolean indicating if the cluster contains a half-vowel

    Example

    const text = new Text("הֲבָרֹות");
    text.clusters[0].hasHalfVowel;
    // true
    text.clusters[1].hasHalfVowel;
    // false

    Description

    The following characters are considered half-vowels:

    • \u{05B1} HATAF SEGOL
    • \u{05B2} HATAF PATAH
    • \u{05B3} HATAF QAMATS
  • get hasLongVowel(): boolean
  • Checks if the cluster contains a long vowel

    Returns boolean

    a boolean indicating if the cluster contains a long vowel

    Example

    const text = new Text("הֲבָרֹות");
    text.clusters[0].hasLongVowel;
    // false
    text.clusters[1].hasLongVowel;
    // true

    Description

    The following characters are considered long vowels:

    • \u{05B5} TSERE
    • \u{05B8} QAMATS
    • \u{05B9} HOLAM
    • \u{05BA} HOLAM HASER FOR VAV
  • get hasMeteg(): boolean
  • Checks if the cluster contains a meteg

    Returns boolean

    a boolean indicating if the cluster contains a meteg

    const text = new Text("נַפְשִֽׁי׃");
    text.clusters[2].hasMetheg;
    // truw

    Description

    Checks if the following character is present and a sof pasuq does not follow it:

    • \u{05BD} METEG
  • get hasMetheg(): boolean
  • Checks if the cluster contains a meteg

    Returns boolean

    a boolean indicating if the cluster contains a meteg

    Deprecated

    use hasMeteg

    const text: Text = new Text("נַפְשִֽׁי׃");
    text.clusters[2].hasMetheg;
    // true

    Description

    Checks if the following character is present and a sof pasuq does not follow it:

    • \u{05BD} METEG
  • get hasSheva(): boolean
  • Checks if the cluster contains a sheva

    Returns boolean

    a boolean indicating if the cluster contains a sheva

    Example

    const text = new Text("מַלְכָּה");
    text.clusters[0].hasSheva;
    // false
    text.clusters[1].hasSheva;
    // true

    Description

    Checks if the following character is present:

    • \u{05B0} SHEVA
  • get hasShewa(): boolean
  • Checks if the cluster contains a sheva

    Returns boolean

    a boolean indicating if the cluster contains a sheva

    Deprecated

    now use hasSheva

    const text = new Text("מַלְכָּה");
    text.clusters[0].hasSheva;
    // false
    text.clusters[1].hasSheva;
    // true

    Description

    Checks if the following character is present:

    • \u{05B0} SHEVA
  • get hasShortVowel(): boolean
  • Checks if the cluster contains a short vowel

    Returns boolean

    a boolean indicating if the cluster contains a short vowel

    Example

    const text = new Text("מַלְכָּה");
    text.clusters[0].hasShortVowel;
    // true
    text.clusters[2].hasShortVowel;
    // false

    Description

    The following characters are considered short vowels:

    • \u{05B4} HIRIQ
    • \u{05B6} SEGOL
    • \u{05B7} PATAH
    • \u{05BB} QUBUTS
    • \u{05C7} QAMATS QATAN
  • get hasSilluq(): boolean
  • Checks if the cluster contains a silluq

    Returns boolean

    a boolean indicating if the cluster contains a silluq

    Example

    const text = new Text("הָאָֽרֶץ׃");
    text.clusters[2].hasSilluq;
    // true

    Description

    Checks if the following character is present and a sof pasuq follows it:

    • \u{05BD} METEG
  • get hasTaamim(): boolean
  • Checks if the cluster contains a taamim character

    Returns boolean

    a boolean indicating if the cluster contains a taamim character

    Example

    const text = new Text("אֱלֹהִ֑ים");
    text.clusters[0].hasTaamim;
    // false
    text.clusters[2].hasTaamim;
    // true

    Description

    The following characters are considered taamim:

    • \u{0591}-\u{05AF}\u{05BF}\u{05C0}\u{05C3}-\u{05C6}\u{05F3}\u{05F4}
  • get hasVowel(): boolean
  • Checks if the cluster contains any vowel character

    Returns boolean

    a boolean indicating if the cluster contains any vowel character

    Example

    const text = new Text("הֲבָרֹות");
    text.clusters[0].hasVowel;
    // true
    text.clusters[4].hasVowel;
    // false

    Description

    According to {@page Syllabification}, a sheva is a vowel and serves as the nucleus of a syllable. Because Cluster is concerned with orthography, a sheva is not a vowel character.

  • get isMater(): boolean
  • Checks if the cluster is a mater letter

    Returns boolean

    a boolean indicating if the cluster is a mater letter

    Example

    const text = new Text("סוּסָה");
    text.clusters[1].isMater; // the shureq
    // false
    text.clusters[3].isMater; // the heh
    // true

    Description

    Returns true if Cluster.hasVowel, Cluster.hasSheva, Cluster.isShureq, and Cluster.next.isShureq are all false and Cluster.text contains a:

    • ה preceded by a qamets, tsere, or segol
    • ו preceded by a holem
    • י preceded by a hiriq, tsere, or segol

    There are potentially other instances when a consonant may be a mater (e.g. a silent aleph), but these are the most common. Though a shureq is a mater letter, it is also a vowel itself, and thus separate from isMater.

  • get isNotHebrew(): boolean
  • Checks if the Cluster does not have Hebrew chars

    Returns boolean

    a boolean indicating if the Cluster does not have Hebrew chars

    * const text = new Text("(לְעֹלָם)");
    text.clusters[0].isNotHebrew;
    // true
  • get isPunctuation(): boolean
  • Checks if the Cluster has any punctuation characters

    Returns boolean

    a boolean indicating if the Cluster has any punctuation characters

    Example

    const text = new Text("הָאָֽרֶץ׃");
    text.clusters[3].isPunctuation;
    // true

    Description

    These are all the Hebrew characters of the category PUNCTUATION

    • \u{05BE} HEBREW PUNCTUATION MAQAF ־
    • \u{05C0} HEBREW PUNCTUATION PASEQ ׀
    • \u{05C3} HEBREW PUNCTUATION SOF PASUQ ׃
    • \u{05C6} HEBREW PUNCTUATION NUN HAFUKHA ׆
  • get isShureq(): boolean
  • Checks if the Cluster is a shureq

    Returns boolean

    a boolean indicating if the Cluster is a shureq

    const text = new Text("קוּם");
    text.clusters[0].isShureq;
    // false
    text.clusters[1].isShureq;
    // true

    Description

    Returns true if Cluster.hasVowel, Cluster.hasSheva, and Cluster.prev.hasVowel are all false and Cluster.text is a vav followed by a dagesh (e.g. וּ) A shureq is a vowel itself, but contains no vowel characters (hence why hasVowel cannot be true). This allows for easier syllabification.

  • get isTaam(): boolean
  • Checks if the Cluster is a taam

    Returns boolean

    a boolean indicating if the Cluster is a taam

    Example

    const text = new Text("הָאָֽרֶץ׃");
    text.clusters[3].isTaam;
    // true

    Description

    This is an alias for isPunctuation. Returns true is the Cluster is any of the following characters:

    • \u{05BE} HEBREW PUNCTUATION MAQAF ־
    • \u{05C0} HEBREW PUNCTUATION PASEQ ׀
    • \u{05C3} HEBREW PUNCTUATION SOF PASUQ ׃
    • \u{05C6} HEBREW PUNCTUATION NUN HAFUKHA ׆
  • get original(): string
  • The original string passed

    Returns string

    the original string passed

    Description

    The original string passed to the constructor that has not been normalized or sequenced. See text

  • get syllable(): null | Syllable
  • The parent Syllable of the cluster

    const text = new Text("דָּבָר");
    const lastCluster: Cluster = text.clusters[2];
    lastCluster.text;
    // "ר"
    lastCluster.syllable.text;
    // "בָר"

    Returns null | Syllable

    Description

    If created via the Text class, there should always be a syllable.

  • set syllable(syllable): void
  • Sets the parent Syllable of the cluster

    Parameters

    Returns void

  • get taamim(): ("֑" | "֒" | "֓" | "֔" | "֕" | "֖" | "֗" | "֘" | "֙" | "֚" | "֛" | "֜" | "֝" | "֞" | "֟" | "֠" | "֡" | "֢" | "֣" | "֤" | "֥" | "֦" | "֧" | "֨" | "֩" | "֪" | "֫" | "֬" | "֭" | "֮")[]
  • Gets all the taamim characters in the cluster

    Returns ("֑" | "֒" | "֓" | "֔" | "֕" | "֖" | "֗" | "֘" | "֙" | "֚" | "֛" | "֜" | "֝" | "֞" | "֟" | "֠" | "֡" | "֢" | "֣" | "֤" | "֥" | "֦" | "֧" | "֨" | "֩" | "֪" | "֫" | "֬" | "֭" | "֮")[]

    an array of taamim characters in the cluster

    const text = new Text("אֱלֹהֶ֑֔יךָ");
    text.clusters[2].taamim;
    // ["֑", "֔"]
  • get taamimNames(): TaamimName[]
  • Gets all the names of the taamim characters in the cluster

    Returns TaamimName[]

    an array of names of taamim characters in the cluster

    const text = new Text("אֱלֹהֶ֑֔יךָ");
    text.clusters[2].taam;
    // ['ETNAHTA', 'ZAQEF_QATAN' ]
  • get text(): string
  • Gets text of the cluster

    Returns string

    the text of the cluster that has been built up from the .text of its constituent Chars

    Example

    const text = new Text("הֲבָרֹות");
    const clusters = text.clusters.map((cluster) => cluster.text);
    // [
    // "הֲ",
    // "בָ",
    // "רֹ",
    // "ו",
    // "ת"
    // ]

    Description

    The text has been normalized and sequenced — see original for text passed in the constructor.

  • get vowelNames(): VowelName[]
  • Gets all the names of the vowel characters in the cluster

    Returns VowelName[]

    an array of names of vowel characters in the cluster

    Example

    const text = new Text("הַֽ֭יְחָבְרְךָ");
    text.clusters[0].vowelNames;
    // ['PATAH']

    Description

    It is exceedingly rare to find more than one vowel character in a cluster. According to {@page Syllabification}, a sheva is a vowel and serves as the nucleus of a syllable. Because Cluster is concerned with orthography, a sheva is not a vowel character

  • get vowels(): ("ֱ" | "ֲ" | "ֳ" | "ִ" | "ֵ" | "ֶ" | "ַ" | "ָ" | "ֹ" | "ֺ" | "ֻ" | "ׇ")[]
  • Gets all the vowel characters in the cluster

    Returns ("ֱ" | "ֲ" | "ֳ" | "ִ" | "ֵ" | "ֶ" | "ַ" | "ָ" | "ֹ" | "ֺ" | "ֻ" | "ׇ")[]

    an array of vowel characters in the cluster

    Example

    const text = new Text("הַֽ֭יְחָבְרְךָ");
    text.clusters[0].vowel;
    // "\u{05B7}"
    text.clusters[3].vowel;
    // null

    Description

    It is exceedingly rare to find more than one vowel character in a cluster. According to {@page Syllabification}, a sheva is a vowel and serves as the nucleus of a syllable. Because Cluster is concerned with orthography, a sheva is not a vowel character

Methods

  • Checks if the cluster contains the consonant character of the name passed in

    Parameters

    Returns boolean

    a boolean indicating if the cluster contains the consonant character of the name passed in

    Example

    const text = new Text("הֲבָרֹות");
    text.clusters[0].hasConsonantName("HE");
    // true
    text.clusters[0].hasConsonantName("BET");
    // false
  • Checks if the cluster contains a taamim character

    Parameters

    Returns boolean

    a boolean indicating if the cluster contains a taamim character

    Example

    const text = new Text("הָאָ֖רֶץ");
    text.clusters[0].hasTaamName("TIPEHA");
    // true

    Description

    Note: it only checks according to the character name, not its semantic meaning. E.g. "כֵֽן׃" would be true when checking for "METEG", not silluq

  • Checks if the cluster contains the vowel character of the name passed in

    Parameters

    Returns boolean

    a boolean indicating if the cluster contains the vowel character of the name passed in

    Example

    const text = new Text("הַיְחָבְרְךָ");
    text.clusters[0].hasVowelName("PATAH");
    // true
    text.clusters[0].hasVowelName("HIRIQ");
    // false

    Description

    According to {@page Syllabification}, a sheva is a vowel and serves as the nucleus of a syllable. Because Cluster is concerned with orthography, a sheva is not a vowel character.

Generated using TypeDoc