diff --git a/src/lib/diacritics-helpers.ts b/src/lib/diacritics-helpers.ts index 2c6547c..211037c 100644 --- a/src/lib/diacritics-helpers.ts +++ b/src/lib/diacritics-helpers.ts @@ -335,6 +335,7 @@ export enum PhonemeStatus { WoEndingO, ShortAForAlefBeforeFathatan, NOnFathatan, + HamzaOnWow, } export function stateInfo({ state, i, phonemes, phoneme }: { @@ -390,6 +391,9 @@ export function stateInfo({ state, i, phonemes, phoneme }: { if (isBeginningOfWord && phoneme === "u" && prevPLetter === " " && lastNonWhitespace(state.pOut) === "د") { return PhonemeStatus.EndOfDuParticle } + if (phoneme === "a" && previousPhoneme === "U" && currentPLetter === "و") { + return PhonemeStatus.HamzaOnWow; + } if (phoneme === "a" && currentPLetter === "ا" && nextPLetter === fathahan) { return PhonemeStatus.ShortAForAlefBeforeFathatan; } diff --git a/src/lib/diacritics.test.ts b/src/lib/diacritics.test.ts index 79ec8ab..13c7e46 100644 --- a/src/lib/diacritics.test.ts +++ b/src/lib/diacritics.test.ts @@ -803,7 +803,7 @@ const diacriticsSections: { p: "توقع", f: "tawaqqÚ", }, - out: "تَوَقّعُ", + out: "تَوَقُّع", }, ], }, @@ -1050,7 +1050,7 @@ const diacriticsSections: { p: "مودب", f: "mUaddab", }, - out: "مؤدَّب", + out: "مُؤَدَّب", }, ], }, diff --git a/src/lib/diacritics.ts b/src/lib/diacritics.ts index 7b97fdc..65a09cd 100644 --- a/src/lib/diacritics.ts +++ b/src/lib/diacritics.ts @@ -189,7 +189,16 @@ function processPhoneme( pipe( advanceP, )(state) + : (phs === PhonemeStatus.HamzaOnWow) ? + pipe( + advanceP, + addP(hamzaAbove), + addP(diacritic), + )(state) : state; + + + // (phs === PhonemeStatus.AlefWithHamzaWithGlottalStop) ? // state