mesdan
Version:
Latinî mesdan ile Osmanî metin yazmak için hazırlanmış bir alettir.
81 lines (80 loc) • 3.81 kB
JavaScript
import { gayriİşaretlerdenMi, harekeMi, kesekMi, tenvinMi, şeddeMi } from '../../aletler/harf-tedkiki-kume';
export function silinecekOsmaniHarfAdediBaşra(alemBaşrasındakiMetin) {
if (!alemBaşrasındakiMetin)
return 0;
const metin = alemBaşrasındakiMetin.normalize('NFC');
const alemBaşrasındakiHarf = metin.slice(-1);
const alemBaşrasındakiİkiHarf = metin.slice(-2);
const alemBaşrasıHarekeMi = harekeMi(alemBaşrasındakiHarf);
const alemBaşrasıTenvinMi = tenvinMi(alemBaşrasındakiHarf);
const alemBaşrasıGayriİşaretlerdenMi = gayriİşaretlerdenMi(alemBaşrasındakiHarf);
const alemBaşrasıŞeddeMi = şeddeMi(alemBaşrasındakiİkiHarf);
const alemBaşrasıKesekMi = kesekMi(alemBaşrasındakiHarf); // ZWNJ - U+200C
const alemBaşrasıŞeddeHariciMi = alemBaşrasıHarekeMi || alemBaşrasıTenvinMi || alemBaşrasıGayriİşaretlerdenMi;
let silinecekHarfAdedi = 1;
if (alemBaşrasıŞeddeMi) {
silinecekHarfAdedi = 3;
}
else if (alemBaşrasıŞeddeHariciMi) {
silinecekHarfAdedi = 2;
}
else if (alemBaşrasıKesekMi) {
const kesekEvvelindekiHarf = metin.slice(0, metin.length - 1).slice(-1);
const kesekEvvelindekiİkiHarf = metin.slice(0, metin.length - 1).slice(-2);
const kesekEvveliHarekeMi = harekeMi(kesekEvvelindekiHarf);
const kesekEvveliTenvinMi = tenvinMi(kesekEvvelindekiHarf);
const kesekEvveliGayriİşaretlerdenMi = gayriİşaretlerdenMi(kesekEvvelindekiHarf);
const kesekEvveliŞeddeHariciMi = kesekEvveliHarekeMi || kesekEvveliTenvinMi || kesekEvveliGayriİşaretlerdenMi;
const kesekEvveliŞeddeMi = şeddeMi(kesekEvvelindekiİkiHarf);
if (kesekEvveliŞeddeMi) {
silinecekHarfAdedi = 4;
}
else if (kesekEvveliŞeddeHariciMi) {
silinecekHarfAdedi = 3;
}
else {
silinecekHarfAdedi = 2;
}
}
return silinecekHarfAdedi;
}
export function silinecekOsmaniHarfAdediSonra(alemSonrasındakiMetin) {
if (alemSonrasındakiMetin.length < 1)
return 0;
else if (alemSonrasındakiMetin.length === 1)
return 1;
// const alemSonrasındekiHarf_Birinci = alemSonrası.slice(0, 1);
const alemSonrasındekiHarf_İkinci = alemSonrasındakiMetin.slice(1, 2);
const alemSonrasındekiHarf_Üçüncü = alemSonrasındakiMetin.slice(2, 3);
const alemSonrasındekiHarf_Dördüncü = alemSonrasındakiMetin.slice(3, 4);
const alemSonrasındekiHarf_İkinciÜçüncü = alemSonrasındakiMetin.slice(1, 3);
const alemSonrasıHarekeliMi = harekeMi(alemSonrasındekiHarf_İkinci);
const alemSonrasıTenvinliMi = tenvinMi(alemSonrasındekiHarf_İkinci);
const alemSonrasıGayriİşaretliMi = gayriİşaretlerdenMi(alemSonrasındekiHarf_İkinci);
const alemSonrasıŞeddeliMi = şeddeMi(alemSonrasındekiHarf_İkinciÜçüncü);
const alemSonrasıKesekliMi = kesekMi(alemSonrasındekiHarf_İkinci);
const alemSonrasıŞeddeHariciMi = alemSonrasıHarekeliMi || alemSonrasıTenvinliMi || alemSonrasıGayriİşaretliMi;
let silinecekHarfAdedi = 1;
if (alemSonrasıŞeddeliMi) {
const şeddeAhiriKesekMi = kesekMi(alemSonrasındekiHarf_Dördüncü);
if (şeddeAhiriKesekMi) {
silinecekHarfAdedi = 4;
}
else {
silinecekHarfAdedi = 3;
}
}
else if (alemSonrasıŞeddeHariciMi) {
const şeddeHariciAhiriKesekMi = kesekMi(alemSonrasındekiHarf_Üçüncü);
if (şeddeHariciAhiriKesekMi) {
silinecekHarfAdedi = 3;
}
else {
silinecekHarfAdedi = 2;
}
}
else if (alemSonrasıKesekliMi) {
silinecekHarfAdedi = 2;
}
return silinecekHarfAdedi;
}