mesdan
Version:
Latinî mesdan ile Osmanî metin yazmak için hazırlanmış bir alettir.
112 lines (111 loc) • 5.23 kB
JavaScript
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ı,
};
}