MediaWiki:Gadget-keysampa2ipa.js

De Viccionari

Nota: Després de publicar, possiblement necessitareu refrescar la memòria cau del vostre navegador per a veure'n els canvis.

  • Firefox / Safari: Premeu Majús i alhora cliqueu el botó Actualitzar, o pressioneu Ctrl+F5 o Ctrl+R (⌘+R en un Mac)
  • Google Chrome: Premeu Ctrl+Majús+R (⌘+Shift+R en un Mac)
  • Internet Explorer / Edge: Premeu Ctrl i alhora cliqueu a Actualitza o pressioneu Ctrl+F5
  • Opera: Premeu Ctrl-F5.
/*-----------------------------------------------------------------
 Substitueix en mode edició certs caràcters de pronúncia SAMPA a AFI.
 Adaptat pels caràcters usuals en català, vegeu [[Viccionari:Pronúncia del català]]
 Idea original de [[fr:MediaWiki:Gadget-specialchars.js].
-------------------------------------------------------------------
 Auteur initial : ThomasV
 Version remaniée pour le Wiktionnaire : ArséniureDeGallium
 Adaptat a SAMPA: Vriullop
-----------------------------------------------------------------*/

// hookage de la fonction, sauf sur les pages en JS ou CSS
// (ce gadget serait une nuisance sur de telles pages)
var P3 = mw.config.get('wgTitle').substring(mw.config.get('wgTitle').length-3);
var P4 = mw.config.get('wgTitle').substring(mw.config.get('wgTitle').length-4);
if( (P3!=".js") && (P4!=".css") ) jQuery(SpecChar_Main);

//-----------------------------------------------------------------------
// remplacement des séquences de caractères
function SpecChar_Main() {
	tb=document.getElementById("wpTextbox1");
	if(!tb)return;
	
	tb.onkeyup=function(e) {
		var key = (window.event) ? event.keyCode : e.keyCode;
		
		startPos = tb.selectionStart;
		endPos = tb.selectionEnd;
		if( endPos==startPos && (key>=32 && key<=255) ) {
			
			m = tb.value.substring(startPos-2, startPos);
			m3 = tb.value.substring(startPos-3, startPos);
			f = tb.value.substring(startPos);
			todo=true;
			i=2;
			
			if(m[1]=="'"){    //traitement de l'apostrophe
				m = m[0]+"’"; 
				if(m=="’’") m="''"; 
				if(m=="'’") m="''"; 
			}else switch(m){ //traitement de des séquences de 2 caractères
				case "º@":m="ə";break;
				case "ºB":m="β";break;
				case "ºD":m="ð";break;
				case "ºE":m="ɛ";break;
				case "ºF":m="ɱ";break;
				case "ºg":m="ɡ";break;
				case "ºG":m="ɣ";break;
				case "ºJ":m="ɲ";break;
				case "ºL":m="ʎ";break;
				case "ºN":m="ŋ";break;
				case "ºO":m="ɔ";break;
				case "ºr":m="ɾ";break;
				case "ºS":m="ʃ";break;
				case "ºZ":m="ʒ";break;
				case 'º"':m="ˈ";break;
				case "º'":m="ˈ";break;
				case "º%":m="ˌ";break;
				case "º,":m="ˌ";break;
				case "º<":m="«";break;
				case "º>":m="»";break;
				default:todo=false;
			}
			if(!todo){     //traitement de des séquences de 3 caractères
				m=m3; todo=true; i=3;
				switch(m){
					case "ºl_":m="ɫ";break;
					case "ºtS":m="t͡ʃ";break;
					case "ºdZ":m="d͡ʒ";break;
					case "ºdz":m="d͡z";break;
					case "ºaa":m="ā";break;
					case "ºii":m="ī";break;
					case "ºee":m="ē";break;
					case "ºuu":m="ū";break;
					case "ºoo":m="ō";break;
					case "ºAA":m="Ā";break;
					case "ºII":m="Ī";break;
					case "ºEE":m="Ē";break;
					case "ºUU":m="Ū";break;
					case "ºOO":m="Ō";break;
					default:todo=false;
				}
			}
			
			if(todo) {
				var textScroll = tb.scrollTop;
				h=tb.value.substring(0, startPos-i);
				tb.value=h+m+f;
				tb.selectionStart=startPos-i + m.length;
				tb.selectionEnd=tb.selectionStart;
				tb.scrollTop=textScroll;
			}
		}
	};
}