UNPKG

mesdan

Version:

Latinî mesdan ile Osmanî metin yazmak için hazırlanmış bir alettir.

112 lines (111 loc) 5.23 kB
import { gayriİşaretlerdenMi, harekeMi, kesmeMi, tenvinMi, şeddeMi } from "../aletler/harf-tedkiki"; import { harfLatinidenOsmaniye } from "./harf-latiniden-osmaniye"; export function ekleOsmaniMetneHarf(mevcutMetin, alemMevkisi, mesHadisesi) { // console.log("ekleOsmaniMetinyeHarf: >" + mesHadisesi.latiniHarf + "<"); let metin = mevcutMetin; const niyetHarekeMi = mesHadisesi.capsLockBasılıMı; if (metin.length < 1) { metin = harfLatinidenOsmaniye(mesHadisesi.latiniHarf, "", mesHadisesi.shiftBasılıMı, mesHadisesi.altBasılıMı).replace("\u200C", ""); return { metinOsmani: metin, alemBaşMevkisi: metin.length }; } const alemİlkresi = metin.slice(0, alemMevkisi.başMevki); const alemSonrası = metin.slice(alemMevkisi.sonMevki); const alemİlkresindekiHarf = alemİlkresi.slice(-1); const alemİlkresindekiİkiHarf = alemİlkresi.slice(-2); // const alemSonrasındekiHarf = alemSonrası.slice(0, 1); // console.log("alemİlkresindekiHarf: > " + alemİlkresindekiHarf + " <"); // console.log("alemSonrasındekiHarf: > " + alemSonrasındekiHarf + " <"); const ilave = harfLatinidenOsmaniye(mesHadisesi.latiniHarf, alemİlkresindekiHarf, mesHadisesi.shiftBasılıMı, mesHadisesi.altBasılıMı); metin = alemİlkresi + ilave + alemSonrası; let alemHareketMiktarı = ilave.length; if (niyetHarekeMi) { const alemİlkresiHarekeMi = harekeMi(alemİlkresindekiHarf); // const ilaveHarekeMi = harekeMi(ilave); const alemİlkresiTenvinMi = tenvinMi(alemİlkresindekiHarf); // const ilaveTenvinMi = tenvinMi(ilave); const alemİlkresiGayriİşaretlerdenMi = gayriİşaretlerdenMi(alemİlkresindekiHarf); // const ilaveGayriİşaretlerdenMi = gayriİşaretlerdenMi(ilave); const alemİlkresiŞeddeMi = şeddeMi(alemİlkresindekiİkiHarf); const ilaveŞeddeMi = şeddeMi(ilave); const alemİlkresiKesmeMi = kesmeMi(alemİlkresindekiHarf); const ilaveKesmeMi = kesmeMi(ilave); const alemİlkresiŞeddeHariciMi = alemİlkresiHarekeMi || alemİlkresiTenvinMi || alemİlkresiGayriİşaretlerdenMi; // Kesme Evveli const kesmeEvvelindekiHarf = alemİlkresi.slice(0, alemİlkresi.length - 1).slice(-1); const kesmeEvvelindekiİkiHarf = alemİlkresi.slice(0, alemİlkresi.length - 1).slice(-2); const kesmeEvveliHarekeMi = harekeMi(kesmeEvvelindekiHarf); const kesmeEvveliTenvinMi = tenvinMi(kesmeEvvelindekiHarf); const kesmeEvveliGayriİşaretlerdenMi = gayriİşaretlerdenMi(kesmeEvvelindekiHarf); const kesmeEvveliŞeddeHariciMi = kesmeEvveliHarekeMi || kesmeEvveliTenvinMi || kesmeEvveliGayriİşaretlerdenMi; const kesmeEvveliŞeddeMi = şeddeMi(kesmeEvvelindekiİkiHarf); if (alemİlkresiKesmeMi) { if (ilaveKesmeMi) { metin = mevcutMetin; } else { if (kesmeEvveliŞeddeMi) { metin = alemİlkresi.slice(0, alemİlkresi.length - 3) + ilave + "\u200C" + alemSonrası; } else if (kesmeEvveliŞeddeHariciMi) { metin = alemİlkresi.slice(0, alemİlkresi.length - 2) + ilave + "\u200C" + alemSonrası; } else { metin = alemİlkresi.slice(0, alemİlkresi.length - 1) + ilave + "\u200C" + alemSonrası; } } } else if (alemİlkresiŞeddeMi) { metin = alemİlkresi.slice(0, alemİlkresi.length - 2) + ilave + alemSonrası; } else if (alemİlkresiŞeddeHariciMi) { metin = alemİlkresi.slice(0, alemİlkresi.length - 1) + ilave + alemSonrası; } if (alemİlkresiKesmeMi) { if (ilaveKesmeMi) { alemHareketMiktarı = 0; } else if (kesmeEvveliŞeddeHariciMi) { if (ilaveŞeddeMi) { alemHareketMiktarı = 1; } else { alemHareketMiktarı = 0; } } else if (kesmeEvveliŞeddeMi) { if (ilaveŞeddeMi) { alemHareketMiktarı = 0; } else { alemHareketMiktarı = -1; } } } else if (alemİlkresiŞeddeMi) { if (ilaveŞeddeMi) { alemHareketMiktarı = 0; } else { alemHareketMiktarı = -1; } } else if (alemİlkresiŞeddeHariciMi) { if (ilaveŞeddeMi) { alemHareketMiktarı = 1; } else { alemHareketMiktarı = 0; } } } else if (alemİlkresi.endsWith("ا") && ilave === "ا") { metin = metin.replace("اا", "آ"); alemHareketMiktarı = ilave.length - 1; } // console.log("ilave.length: " + ilave.length); // console.log("alemHareketMiktarı: " + alemHareketMiktarı); return { metinOsmani: metin, alemBaşMevkisi: alemİlkresi.length + alemHareketMiktarı, }; }