transcriptor-fonologico
Version:
Un simple transcriptor fonológico para la lengua española.
377 lines • 14.8 kB
JavaScript
;
let v = 1;
let y = 0;
let s = 0;
let n = 0;
let l = 0;
let t = 0;
let z = 0;
let themeValue = 2;
let myInputW = 810;
let myInputH = 240;
let myArea = 0;
let myRAE = document.getElementById("myRAE");
let myAFE = document.getElementById("myAFE");
let myAFI = document.getElementById("myAFI");
let myBox1 = document.getElementById("myBox1");
let myBox2 = document.getElementById("myBox2");
let myBox3 = document.getElementById("myBox3");
let myBox4 = document.getElementById("myBox4");
// BOTONERA SUPERIOR
function myfunRAE() {
if ( myRAE.checked == true ) {
document.getElementById("myAFE").checked = false;
document.getElementById("myAFI").checked = false;
document.getElementById("Rules1").style.display = "inline";
document.getElementById("Rules2").style.display = "none";
document.getElementById("Rules3").style.display = "none";
document.getElementById("myYei").innerHTML = "ll:y";
document.getElementById("mySes").innerHTML = "z:s";
document.getElementById("myNei").innerHTML = "ñ:ni";
document.getElementById("myLel").innerHTML = "rr:l";
myCookie();
} else {
document.getElementById("myRAE").checked = true;
myfunRAE();
};
};
function myfunAFE() {
if ( myAFE.checked == true ) {
document.getElementById("myRAE").checked = false;
document.getElementById("myAFI").checked = false;
document.getElementById("Rules1").style.display = "none";
document.getElementById("Rules2").style.display = "inline";
document.getElementById("Rules3").style.display = "none";
document.getElementById("myYei").innerHTML = "h:y";
document.getElementById("mySes").innerHTML = "z:s";
document.getElementById("myNei").innerHTML = "ñ:ni";
document.getElementById("myLel").innerHTML = "vr:l";
myCookie();
} else {
document.getElementById("myAFE").checked = true;
myfunAFE();
};
};
function myfunAFI() {
if ( myAFI.checked == true ) {
document.getElementById("myRAE").checked = false;
document.getElementById("myAFE").checked = false;
document.getElementById("Rules1").style.display = "none";
document.getElementById("Rules2").style.display = "none";
document.getElementById("Rules3").style.display = "inline";
document.getElementById("myYei").innerHTML = "ʎ:ʝ";
document.getElementById("mySes").innerHTML = "θ:s";
document.getElementById("myNei").innerHTML = "ɲ:ni";
document.getElementById("myLel").innerHTML = "rɾ:l";
myCookie();
} else {
document.getElementById("myAFI").checked = true;
myfunAFI();
};
};
function myFunction1() {
if ( myBox1.checked == true ) {
document.getElementById("myYeismo").style.display = "inline";
};
if ( myBox1.checked == false ) {
document.getElementById("myYeismo").style.display = "none";
};
myCookie();
};
function myFunction2() {
if ( myBox2.checked == true ) {
document.getElementById("mySeseo").style.display = "inline";
};
if ( myBox2.checked == false ) {
document.getElementById("mySeseo").style.display = "none";
};
myCookie();
};
function myFunction3() {
if ( myBox3.checked == true ) {
document.getElementById("myNeismo").style.display = "inline";
};
if ( myBox3.checked == false ) {
document.getElementById("myNeismo").style.display = "none";
};
myCookie();
};
function myFunction4() {
if ( myBox4.checked == true ) {
document.getElementById("myLeleo").style.display = "inline";
};
if ( myBox4.checked == false ) {
document.getElementById("myLeleo").style.display = "none";
};
myCookie();
};
// BOTONERA INFERIOR
function myChange() {
if ( myRAE.checked == true ) { v = 1 };
if ( myAFE.checked == true ) { v = 2 };
if ( myAFI.checked == true ) { v = 3 };
if ( myBox1.checked == true ) { y = 1 } else { y = 0 };
if ( myBox2.checked == true ) { s = 1 } else { s = 0 };
if ( myBox3.checked == true ) { n = 1 } else { n = 0 };
if ( myBox4.checked == true ) { l = 1 } else { l = 0 };
let texto;
texto = document.getElementById("myInput").value.toString();
if ( myBox4.checked == true ) { texto = texto.replace(/rrl/g,"l.l").replace(/rl/g,"l.l").replace(/RRL/g,"L.L").replace(/RL/g,"L.L") };
if ( myBox4.checked == true ) { texto = texto.replace(/lrr/g,"l.l").replace(/lr/g,"l.l").replace(/LRR/g,"L.L").replace(/LR/g,"L.L") };
texto = Transcribir(texto,v,y,s,n,l);
document.getElementById("myResult").value = texto;
document.getElementById("myInput").scrollTop = 0;
document.getElementById("myResult").scrollTop = 0;
};
function myClear() {
document.getElementById("myInput").value = "";
document.getElementById("myResult").value = "";
};
function myAaTex() {
let amatex = document.getElementById("myInput").value.toString();
document.getElementById("myInput").value = myMoTex(amatex);
document.getElementById("myInput").scrollTop = 0;
document.getElementById("myResult").scrollTop = 0;
};
function myMoTex(abtexto) {
abtexto = abtexto.toLowerCase();
// let abtexto = abtexto.replace(/\s+/g, " ");
// let abtexto = abtexto.trim();
abtexto = abtexto.replace(/\n+/g, "êăõ");
abtexto = abtexto.replace(/\s+/g, " ");
abtexto = abtexto.replace(/êăõ* /g, "\n\n");
abtexto = abtexto.replace(/êăõ/g, "\n\n");
abtexto = abtexto.trim();
// abtexto = abtexto.replace(/«/g,'"').replace(/»/g,'"').replace(/“/g,'"').replace(/”/g,'"').replace(/‘/g,"'").replace(/’/g,"'").replace(/`/g,"'").replace(/´/g,"'");
// abtexto = abtexto.replace(/[^a-z0-9 áéíóúüñ\n",:'\.\—\_\-?¿!¡;\(\)\[\]\{\}\…\+\=]/g,"");
return abtexto;
};
function mySave() {
let texto1 = document.getElementById("myInput").value;
let texto2 = document.getElementById("myResult").value;
let texto3 = "=== TEXTO INICIAL ===" + "\n\n" + texto1 + "\n\n" + "=== TEXTO FONEMAS ===" + "\n\n" + texto2;
let texto4 = texto3.replace(/\n/g, "\r\n");
let texto5 = texto4.replace(/\r+/g, "\r");
let factor = document.createElement('a');
factor.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(texto5));
factor.setAttribute("download", "texto.txt");
factor.style.display = "none";
document.body.appendChild(factor);
factor.click();
document.body.removeChild(factor);
};
function myCopy() {
let texto1 = document.getElementById("myInput").value;
let texto2 = document.getElementById("myResult").value;
let texto3 = "=== TEXTO INICIAL ===" + "\n\n" + texto1 + "\n\n" + "=== TEXTO FONEMAS ===" + "\n\n" + texto2;
let texto4 = texto3.replace(/\n/g, "\r\n");
let texto5 = texto4.replace(/\r+/g, "\r");
const textArea = document.createElement("textarea");
textArea.value = texto2;
document.body.appendChild(textArea);
textArea.select();
document.execCommand("copy");
document.body.removeChild(textArea);
// window.alert("Copiado");
document.getElementById("myCopy").innerHTML = "Copiado";
setTimeout( function() { document.getElementById("myCopy").innerHTML = "Copiar"; }, 1800 );
};
function myBreak() {
let texto;
texto = document.getElementById("myResult").value.toString();
if ( myAFI.checked == true ) {
texto = texto.replace(/t͡ʃ/g,"ch").replace(/x/g,"j").replace(/ʎ/g,"ll").replace(/ɲ/g,"ñ").replace(/r/g,"rr").replace(/ɾ/g,"r").replace(/ʝ/g,"y").replace(/θ/g,"z");
};
texto = Separator(texto);
if ( myAFI.checked == true ) {
texto = texto.replace(/ch/g,"t͡ʃ").replace(/j/g,"x").replace(/ll/g,"ʎ").replace(/ñ/g,"ɲ").replace(/rr/g,"æý").replace(/r/g,"ɾ").replace(/æý/g,"r").replace(/y/g,"ʝ").replace(/z/g,"θ");
};
document.getElementById("myResult").value = texto;
document.getElementById("myInput").scrollTop = 0;
document.getElementById("myResult").scrollTop = 0;
};
// MODO OSCURO - CLARO
function myTheme() {
if ( themeValue == 2 ) {
document.body.style.color = "#efefef";
document.body.style.backgroundColor = "#303030";
let i = 0;
while ( i < 2 ) {
document.getElementsByTagName("textarea")[i].style.color = "#efefef";
document.getElementsByTagName("textarea")[i].style.backgroundColor = "#303030";
document.getElementsByTagName("textarea")[i].style.border = "1px solid #969696";
document.getElementsByTagName("textarea")[i].style.scrollbarColor = "#2b2b2b #363636";
i = i + 1;
};
let u = 0;
while ( u < 6 ) {
document.getElementsByTagName("button")[u].style.color = "#efefef";
document.getElementsByTagName("button")[u].style.backgroundColor = "#303030";
document.getElementsByTagName("button")[u].style.border = "1px solid #969696";
u = u + 1;
};
let a = 0;
while ( a < 11 ) {
document.getElementsByTagName("a")[a].style.color = "#c63636";
document.getElementsByTagName("a")[a].style.backgroundColor = "#303030";
a = a + 1;
};
document.getElementById("myTxa").style.backgroundColor = "#303030";
document.getElementById("myTxa").style.color = "#c63636";
themeValue = 1;
t = 2;
myCookie();
} else {
document.body.style.color = "#181818";
document.body.style.backgroundColor = "#ffffff";
let i = 0;
while ( i < 2 ) {
document.getElementsByTagName("textarea")[i].style.color = "#181818";
document.getElementsByTagName("textarea")[i].style.backgroundColor = "#ffffff";
document.getElementsByTagName("textarea")[i].style.border = "1px solid #999999";
document.getElementsByTagName("textarea")[i].style.scrollbarColor = "#c9c9c9 #fbfbfb";
i = i + 1;
};
let u = 0;
while ( u < 6 ) {
document.getElementsByTagName("button")[u].style.color = "#181818";
document.getElementsByTagName("button")[u].style.backgroundColor = "#ffffff";
document.getElementsByTagName("button")[u].style.border = "1px solid #999999";
u = u + 1;
};
let a = 0;
while ( a < 11 ) {
document.getElementsByTagName("a")[a].style.color = "#0000ff";
document.getElementsByTagName("a")[a].style.backgroundColor = "#ffffff";
a = a + 1;
};
document.getElementById("myTxa").style.backgroundColor = "#ffffff";
document.getElementById("myTxa").style.color = "#0000ff";
themeValue = 2;
t = 1;
myCookie();
};
};
// TEXTAREA
function mySize() {
myInputW = document.getElementById("myInput").offsetWidth;
myInputH = document.getElementById("myInput").offsetHeight;
myTextarea();
};
function myTextarea() {
if ( myInputW < 810 ) { myInputW = 810; };
if ( myInputH < 240 ) { myInputH = 240; };
if ( myInputW > document.getElementById("main").offsetWidth ) { myInputW = document.getElementById("main").offsetWidth; };
if ( myInputH > screen.height ) { myInputH = screen.height; };
if ( myArea == 1 ) {
myInputW = document.getElementById("main").offsetWidth;
myInputH = screen.height;
};
let i = 0;
while ( i < 2 ) {
document.getElementsByTagName("textarea")[i].style.width = myInputW + "px";
document.getElementsByTagName("textarea")[i].style.height = myInputH + "px";
i = i + 1;
};
myCookie();
};
// COOKIES
function myCookie() {
if ( myRAE.checked == true ) { v = 1 };
if ( myAFE.checked == true ) { v = 2 };
if ( myAFI.checked == true ) { v = 3 };
if ( myBox1.checked == true ) { y = 1 } else { y = 0 };
if ( myBox2.checked == true ) { s = 1 } else { s = 0 };
if ( myBox3.checked == true ) { n = 1 } else { n = 0 };
if ( myBox4.checked == true ) { l = 1 } else { l = 0 };
document.cookie = "fonologica=" + v + "," + y + "," + s + "," + n + "," + l + "," + t + "," + myInputW + "," + myInputH + "," + myArea + ",~" + "; max-age=31415926 ; path=/";
};
// SETTING
function mySetting() {
if ( document.cookie.search(/fonologica=/) !== -1 ) {
let settingDecode = decodeURIComponent(document.cookie);
let settingValue = settingDecode.replace(/^.*(fonologica=)(.*)(,~).*/,"$2");
let settingLista = settingValue.trim().split(",");
if ( settingLista[0] == 1 ) { document.getElementById("myRAE").checked = true ; myfunRAE(); };
if ( settingLista[0] == 2 ) { document.getElementById("myAFE").checked = true ; myfunAFE(); };
if ( settingLista[0] == 3 ) { document.getElementById("myAFI").checked = true ; myfunAFI(); };
if ( settingLista[1] == 1 ) { document.getElementById("myBox1").checked = true ; myFunction1(); };
if ( settingLista[2] == 1 ) { document.getElementById("myBox2").checked = true ; myFunction2(); };
if ( settingLista[3] == 1 ) { document.getElementById("myBox3").checked = true ; myFunction3(); };
if ( settingLista[4] == 1 ) { document.getElementById("myBox4").checked = true ; myFunction4(); };
if ( settingLista[5] == 1 || settingLista[5] == 2 ) { themeValue = settingLista[5] ; myTheme(); };
if ( settingLista[6] !== undefined ) { myInputW = settingLista[6]; };
if ( settingLista[7] !== undefined ) { myInputH = settingLista[7]; };
if ( settingLista[8] !== undefined ) { myArea = settingLista[8] ; myModoW(); };
myTextarea();
};
};
// ACCESO
function myModoA() {
z = 1;
setTimeout(function(){z = 0;}, 15000);
};
// TEXTAREA
function myModoT() {
if ( myArea == 0 ) {
document.getElementById("myTxa").innerHTML = "MODO M";
myArea = 1;
myCookie();
myTextarea();
} else {
document.getElementById("myTxa").innerHTML = "MODO A";
myInputW = 810;
myInputH = 240;
myArea = 0;
myCookie();
myTextarea();
};
};
function myModoW() {
if ( myArea == 1 ) {
document.getElementById("myTxa").innerHTML = "MODO M";
} else {
document.getElementById("myTxa").innerHTML = "MODO A";
};
};
// RESPONSIVE
function myResponsive() {
let widthMain = document.getElementById("main").offsetWidth;
// MARGENS VALUES
let valueMargen = myCalculation( widthMain, 300, 700, 0.45, 1.20 ) ;
document.getElementById("main").style.margin = 0 + "em" + " " + valueMargen + "em" ;
// FONT-SIZE MAIN
let valueMfs = myCalculation( widthMain, 200, 600, 16, 20 ) ;
document.getElementById("main").style.fontSize = valueMfs + "px" ;
// FONT-SIZE H1 & H2
let valueHfs = myCalculation( widthMain, 200, 600, 24, 36 ) ;
let widthH1 = myCalculation( widthMain, 120, 230, 0.60, 1 ) ;
if ( widthMain < 136 ) { document.getElementById("Title").innerHTML = "TRANSCR. FONOLÓGICA"; };
if ( widthMain >= 136 ) { document.getElementById("Title").innerHTML = "TRANSCRIPCIÓN FONOLÓGICA"; };
document.getElementsByTagName("h1")[0].style.fontSize = valueHfs * widthH1 + "px" ;
let i = 0;
while ( i < 5 ) {
document.getElementsByTagName("h2")[i].style.fontSize = valueHfs * 0.70 + "px" ;
i = i + 1;
};
myTextarea();
};
// RESPONSIVE CALCULATION
function myCalculation ( X, Xa, Xb, Ya, Yb ) {
if ( Xa !== Xb ) {
if ( ( Xa < Xb ) && ( X <= Xa ) ) { let Y = Number ( Ya ); return Y; };
if ( ( Xa < Xb ) && ( X >= Xb ) ) { let Y = Number ( Yb ); return Y; };
if ( ( Xa > Xb ) && ( X >= Xa ) ) { let Y = Number ( Ya ); return Y; };
if ( ( Xa > Xb ) && ( X <= Xb ) ) { let Y = Number ( Yb ); return Y; };
if ( ( X > Xa && X < Xb ) || ( X > Xb && X < Xa ) ) {
let Y = Number ( [ Yb * ( X - Xa ) + Ya * ( Xb - X ) ] / [ ( Xb - Xa ) ] );
return Y;
};
} else {
return false;
};
};
// INICIO
mySetting();
myResponsive();
window.addEventListener( "resize", myResponsive );