Skip to content

Cluster

Defined in: cluster.ts:29

A cluster is group of Hebrew character constituted by:

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

Remarks

A Syallble 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 character is sequenced first for normalization, see the SBL Hebrew Font Manual, p.8.

Extends

Constructors

Constructor

new Cluster(cluster, noSequence): Cluster

Defined in: cluster.ts:57

Creates a new cluster

Parameters

ParameterTypeDefault valueDescription
clusterstringundefinedthe original cluster
noSequencebooleanfalsewhether to sequence the cluster

Returns

Cluster

Example

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

Overrides

Node.constructor

Properties

next

next: null | Node<Cluster>

Defined in: node.ts:9

Reference to the next node in the sequence.

Inherited from

Node.next


prev

prev: null | Node<Cluster>

Defined in: node.ts:12

Reference to the previous node in the sequence.

Inherited from

Node.prev


value

value: null | Cluster

Defined in: node.ts:15

The value stored in this node.

Inherited from

Node.value

Accessors

chars

Get Signature

get chars(): Char[]

Defined in: cluster.ts:93

Gets all the characters in the cluster

Example
const text = new Text("הֲבָרֹות");
text.clusters[0].chars;
// [
// Char { original: "ה" },
// Char { original: "ֲ " }, i.e. \u{05B2} (does not print well)
// ]
Returns

Char[]

an array of sequenced Char objects


consonantNames

Get Signature

get consonantNames(): ("ALEF" | "BET" | "GIMEL" | "DALET" | "HE" | "VAV" | "ZAYIN" | "HET" | "TET" | "YOD" | "FINAL_KAF" | "KAF" | "LAMED" | "FINAL_MEM" | "MEM" | "FINAL_NUN" | "NUN" | "SAMEKH" | "AYIN" | "FINAL_PE" | "PE" | "FINAL_TSADI" | "TSADI" | "QOF" | "RESH" | "SHIN" | "TAV")[]

Defined in: cluster.ts:145

Gets all 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

Returns

("ALEF" | "BET" | "GIMEL" | "DALET" | "HE" | "VAV" | "ZAYIN" | "HET" | "TET" | "YOD" | "FINAL_KAF" | "KAF" | "LAMED" | "FINAL_MEM" | "MEM" | "FINAL_NUN" | "NUN" | "SAMEKH" | "AYIN" | "FINAL_PE" | "PE" | "FINAL_TSADI" | "TSADI" | "QOF" | "RESH" | "SHIN" | "TAV")[]

an array of the consonant names in the cluster


consonants

Get Signature

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

Defined in: cluster.ts:113

Gets all 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

Returns

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

an array of the consonant characters in the cluster


hasHalfVowel

Get Signature

get hasHalfVowel(): boolean

Defined in: cluster.ts:203

Checks 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
Returns

boolean

a boolean indicating if the cluster contains a half-vowel


hasLongVowel

Get Signature

get hasLongVowel(): boolean

Defined in: cluster.ts:228

Checks 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
Returns

boolean

a boolean indicating if the cluster contains a long vowel


hasMeteg

Get Signature

get hasMeteg(): boolean

Defined in: cluster.ts:269

Checks if the cluster contains a meteg

Description

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

  • \u{05BD} METEG
Returns

boolean

a boolean indicating if the cluster contains a meteg

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

hasMetheg

Get Signature

get hasMetheg(): boolean

Defined in: cluster.ts:250

Checks if the cluster contains a meteg

Example
const 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
Returns

boolean

a boolean indicating if the cluster contains a meteg


hasSheva

Get Signature

get hasSheva(): boolean

Defined in: cluster.ts:308

Checks 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
Returns

boolean

a boolean indicating if the cluster contains a sheva


hasShewa

Get Signature

get hasShewa(): boolean

Defined in: cluster.ts:332

Checks 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
Returns

boolean

a boolean indicating if the cluster contains a sheva


hasShortVowel

Get Signature

get hasShortVowel(): boolean

Defined in: cluster.ts:358

Checks 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
Returns

boolean

a boolean indicating if the cluster contains a short vowel


hasSilluq

Get Signature

get hasSilluq(): boolean

Defined in: cluster.ts:378

Checks 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
Returns

boolean

a boolean indicating if the cluster contains a silluq


hasTaamim

Get Signature

get hasTaamim(): boolean

Defined in: cluster.ts:428

Checks 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}
Returns

boolean

a boolean indicating if the cluster contains a taamim character


hasVowel

Get Signature

get hasVowel(): boolean

Defined in: cluster.ts:450

Checks 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 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.

Returns

boolean

a boolean indicating if the cluster contains any vowel character


isMater

Get Signature

get isMater(): boolean

Defined in: cluster.ts:504

Checks 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
  • ו 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.

Returns

boolean

a boolean indicating if the cluster is a mater letter


isNotHebrew

Get Signature

get isNotHebrew(): boolean

Defined in: cluster.ts:538

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

isPunctuation

Get Signature

get isPunctuation(): boolean

Defined in: cluster.ts:561

Checks 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 ׆
Returns

boolean

a boolean indicating if the Cluster has any punctuation characters


isShureq

Get Signature

get isShureq(): boolean

Defined in: cluster.ts:585

Checks if the Cluster is a shureq

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.

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

isTaam

Get Signature

get isTaam(): boolean

Defined in: cluster.ts:612

Checks 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 ׆
Returns

boolean

a boolean indicating if the Cluster is a taam


original

Get Signature

get original(): string

Defined in: cluster.ts:624

The original string passed

Description

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

Returns

string

the original string passed


siblings

Get Signature

get siblings(): Node<T>[]

Defined in: node.ts:63

Gets the siblings of this node.

Returns

Node<T>[]

An array of Node representing all subsequent nodes in the sequence.

Set Signature

set siblings(arr): void

Defined in: node.ts:47

Sets the siblings of this node. Establishes bidirectional links between adjacent nodes in the provided array.

Parameters
ParameterTypeDescription
arrNode<T>[]An array of Node to set as siblings.
Returns

void

Inherited from

Node.siblings


syllable

Get Signature

get syllable(): null | Syllable

Defined in: cluster.ts:643

The parent Syllable of the cluster

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

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

Returns

null | Syllable

Set Signature

set syllable(syllable): void

Defined in: cluster.ts:651

Sets the parent Syllable of the cluster

Parameters
ParameterType
syllablenull | Syllable
Returns

void


taamim

Get Signature

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

Defined in: cluster.ts:666

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;
// ["֑", "֔"]

taamimNames

Get Signature

get taamimNames(): ("ETNAHTA" | "SEGOL_ACCENT" | "SHALSHELET" | "ZAQEF_QATAN" | "ZAQEF_GADOL" | "TIPEHA" | "REVIA" | "ZARQA" | "PASHTA" | "YETIV" | "TEVIR" | "GERESH" | "GERESH_MUQDAM" | "GERSHAYIM" | "QARNEY_PARA" | "TELISHA_GEDOLA" | "PAZER" | "ATNAH_HAFUKH" | "MUNAH" | "MAHAPAKH" | "MERKHA" | "MERKHA_KEFULA" | "DARGA" | "QADMA" | "TELISHA_QETANA" | "YERAH_BEN_YOMO" | "OLE" | "ILUY" | "DEHI" | "ZINOR")[]

Defined in: cluster.ts:693

Gets all the names of the taamim characters in the cluster

Returns

("ETNAHTA" | "SEGOL_ACCENT" | "SHALSHELET" | "ZAQEF_QATAN" | "ZAQEF_GADOL" | "TIPEHA" | "REVIA" | "ZARQA" | "PASHTA" | "YETIV" | "TEVIR" | "GERESH" | "GERESH_MUQDAM" | "GERSHAYIM" | "QARNEY_PARA" | "TELISHA_GEDOLA" | "PAZER" | "ATNAH_HAFUKH" | "MUNAH" | "MAHAPAKH" | "MERKHA" | "MERKHA_KEFULA" | "DARGA" | "QADMA" | "TELISHA_QETANA" | "YERAH_BEN_YOMO" | "OLE" | "ILUY" | "DEHI" | "ZINOR")[]

an array of names of taamim characters in the cluster

const text = new Text("אֱלֹהֶ֑֔יךָ");
text.clusters[2].taam;
// ['ETNAHTA', 'ZAQEF_QATAN' ]

text

Get Signature

get text(): string

Defined in: cluster.ts:731

Gets text of the cluster

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.

Returns

string

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


vowelNames

Get Signature

get vowelNames(): ("HATAF_SEGOL" | "HATAF_PATAH" | "HATAF_QAMATS" | "HIRIQ" | "TSERE" | "SEGOL" | "PATAH" | "QAMATS" | "HOLAM" | "HOLAM_HASER" | "QUBUTS" | "QAMATS_QATAN")[]

Defined in: cluster.ts:752

Gets all the names of the 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 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

Returns

("HATAF_SEGOL" | "HATAF_PATAH" | "HATAF_QAMATS" | "HIRIQ" | "TSERE" | "SEGOL" | "PATAH" | "QAMATS" | "HOLAM" | "HOLAM_HASER" | "QUBUTS" | "QAMATS_QATAN")[]

an array of names of vowel characters in the cluster


vowels

Get Signature

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

Defined in: cluster.ts:787

Gets all the 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 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

Returns

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

an array of vowel characters in the cluster

Methods

hasConsonantName()

hasConsonantName(name): boolean

Defined in: cluster.ts:175

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

Parameters

ParameterType
name"ALEF" | "BET" | "GIMEL" | "DALET" | "HE" | "VAV" | "ZAYIN" | "HET" | "TET" | "YOD" | "FINAL_KAF" | "KAF" | "LAMED" | "FINAL_MEM" | "MEM" | "FINAL_NUN" | "NUN" | "SAMEKH" | "AYIN" | "FINAL_PE" | "PE" | "FINAL_TSADI" | "TSADI" | "QOF" | "RESH" | "SHIN" | "TAV"

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

hasTaamName()

hasTaamName(name): boolean

Defined in: cluster.ts:403

Checks if the cluster contains a taamim character

Parameters

ParameterType
name"ETNAHTA" | "SEGOL_ACCENT" | "SHALSHELET" | "ZAQEF_QATAN" | "ZAQEF_GADOL" | "TIPEHA" | "REVIA" | "ZARQA" | "PASHTA" | "YETIV" | "TEVIR" | "GERESH" | "GERESH_MUQDAM" | "GERSHAYIM" | "QARNEY_PARA" | "TELISHA_GEDOLA" | "PAZER" | "ATNAH_HAFUKH" | "MUNAH" | "MAHAPAKH" | "MERKHA" | "MERKHA_KEFULA" | "DARGA" | "QADMA" | "TELISHA_QETANA" | "YERAH_BEN_YOMO" | "OLE" | "ILUY" | "DEHI" | "ZINOR"

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


hasVowelName()

hasVowelName(name): boolean

Defined in: cluster.ts:472

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

Parameters

ParameterType
name"HATAF_SEGOL" | "HATAF_PATAH" | "HATAF_QAMATS" | "HIRIQ" | "TSERE" | "SEGOL" | "PATAH" | "QAMATS" | "HOLAM" | "HOLAM_HASER" | "QUBUTS" | "QAMATS_QATAN"

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 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.