Skip to content

SyllableFeature

Extends

Properties

FEATURE

FEATURE: "syllable"

Additional orthographic feature:

  • "cluster" is any combination of a single character and optionally a dagesh and vowel.
  • "syllable" is any combination of a multiple characters and a single vowel and optionally a dagesh
  • "word" covers everything else

Defined in

src/schema.ts:160


HEBREW

HEBREW: string | RegExp

The Hebrew text — use consonants and vowels; do not use taamim

Remarks

The text is parsed as a Regex so special characters like ? and | can be used

Inherited from

HebrewFeature.HEBREW

Defined in

src/schema.ts:18


PASS_THROUGH?

optional PASS_THROUGH: boolean

If true passes the characters of the result of the TRANSLITERATION callback to the be mapped to the schema. If TRANSLITERATION is a string, this does nothing.

Default

true

Examples

// with PASS_THROUGH true or undefined; the rest of the characters are passed through
// to regular mapping on the schema
heb.transliterate("בְּרֵאשִׁ֖ית", {
ADDITIONAL_FEATURES: [{
HEBREW: "(?<![\u{05B1}-\u{05BB}\u{05C7}].*)\u{05B0}",
FEATURE: "syllable",
PASS_THROUGH: true,
TRANSLITERATION: function (syllable, _hebrew, schema) {
const next = syllable.next;
const nextVowel = next.vowelName === "SHEVA" ? "VOCAL_SHEVA" : next.vowelName
if (next && nextVowel) {
const vowel = schema[nextVowel] || "";
return syllable.text.replacenew RegExp("\u{05B0}", "u"; vowel);
}
return syllable.text;
}
}]
});
// with PASS_THROUGH false, a custom mapping needs to be implemented,
// or Hebrew characters are returned for the rest of the `FEATURE`
heb.transliterate("בְּרֵאשִׁ֖ית", {
ADDITIONAL_FEATURES: [{
HEBREW: "(?<![\u{05B1}-\u{05BB}\u{05C7}].*)\u{05B0}",
FEATURE: "syllable",
PASS_THROUGH: false,
TRANSLITERATION: function (syllable, _hebrew, schema) {
const next = syllable.next;
const nextVowel = next.vowelName === "SHEVA" ? "VOCAL_SHEVA" : next.vowelName
if (next && nextVowel) {
const vowel = schema[nextVowel] || "";
return syllable.text.replacenew RegExp("\u{05B0}", "u"; vowel);
}
return syllable.text;
}
}]
});
// בּērēʾšît

Remarks

This is generally most useful when the callback does not transliterate the entire FEATURE

Inherited from

PassThrough.PASS_THROUGH

Defined in

src/schema.ts:81


TRANSLITERATION

TRANSLITERATION: string | SyllableCallback

A string or callback to customize output

Examples

Using a string

transliterate("מְחִיּיָאֵ֗ל", {
ADDITIONAL_FEATURES: [{
FEATURE: "syllable",
HEBREW: /יּ(?![\u{05B4}-\u{05BB}])/u, // a yod with a dagesh, not followed by a vowel character
TRANSLITERATION: "Y"
}]
});
mǝḥiYyāʾēl

Using a callback

transliterate("נָעֳמִי֙", {
ADDITIONAL_FEATURES: [{
FEATURE: "syllable",
HEBREW: /\u{05C7}/u,
TRANSLITERATION: (syllable) => {
// If the syllable contains a qamets qatan character (U+05C7), check the text of the next syllable
const next = syllable?.next?.value?.text;
// If the next syllable includes a hateph qamets, then replace the qamets qatan with a regular qamets
if (next && next.includes("\u05B3")) {
return syllable.text.replace("\u{05C7}", "\u{05B8}");
}
return syllable.text;
}
}]
});
// nāʿŏmî

Defined in

src/schema.ts:201