User:Mzajac/IPA.js

// Adds a contextual IPA key after the tooltip text in any element which has class=IPA

// modified version of User:Nohat/IPA.js // raw script is at /w/index.php?title=User:Mzajac/monobook.js&amp;action=raw&amp;ctype=text/javascript

var IPAkey = new Array;

// consonants IPAkey["dz"] = "poDS"; IPAkey["ʣ"] = "poDS"; IPAkey["dʒ"] = "riDGe"; IPAkey["ʤ"] = "riDGe"; IPAkey["ɡ"] = "piG"; IPAkey["ʒ"] = "beiGE"; IPAkey["j"] = "Yes"; IPAkey["ŋ"] = "riNG"; IPAkey["ŋɡ"] = "fiNGer"; IPAkey["ɹ"] = "Red"; IPAkey["ʃ"] = "SHoe"; IPAkey["tʃ"] = "CHoose"; IPAkey["θ"] = "THing"; IPAkey["ð"] = "THis"; IPAkey["ʍ"] = "WHat"; IPAkey["hw"] = "WHat"; IPAkey["ʔ"] = "uh-oh";

// vowels IPAkey["ɑ"] = "spA"; IPAkey["ɑɹ"] = "cAR"; IPAkey["ɒ"] = "rOd"; IPAkey["æ"] = "bAd"; IPAkey["ɔ"] = "lAW"; IPAkey["ɔɹ"] = "nORth"; IPAkey["ə"] = "About"; IPAkey["ɚ"] = "winnER"; IPAkey["ɛ"] = "bEd"; IPAkey["ɝ"] = "shIRt"; IPAkey["ɜr"] = "hER"; IPAkey["i"] = "shE"; IPAkey["ɪ"] = "bIg"; IPAkey["ɨ"] = "rosEs"; IPAkey["ʧ"] = "CHoose"; IPAkey["ʊ"] = "bOOk"; IPAkey["ʊɹ"] = "tOUR"; IPAkey["u"] = "fOOd"; IPAkey["ʌ"] = "rUn";

// diphthongs IPAkey["aɪ"] = "crY"; IPAkey["aʊ"] = "nOW"; IPAkey["eɪ"] = "mAId"; IPAkey["əʊ"] = "sOAp"; IPAkey["ɔɪ"] = "bOY"; IPAkey["oʊ"] = "sOAp"; IPAkey["ju"] = "cUE";

// regional IPAkey["ɑ̃"] = "frANglais"; IPAkey["æ̃"] = "biEN"; IPAkey["ɜː"] = "dEUX"; IPAkey["ɔ̃"] = "bON"; IPAkey["x"] = "loCH";

function IPAkeys { var ipaSpans = getElementsByClassName(document, "span", "IPA"); for (var i = 0; i < ipaSpans.length ; i++) { var span = ipaSpans[i];

var str = IPA_getInnerText(span); var helpText = ''; var foundMatches = new Array;

for (var j = 0; j < str.length; j++) { var one = str.charAt(j); var two = one + str.charAt(j+1); var IPA_match = '';

if (IPAkey[two]) { IPA_match = two; j++; } else if (IPAkey[one]) { IPA_match = one; }

if (IPA_match && !foundMatches[IPA_match] && IPAkey[IPA_match]) { if (helpText > '') { helpText += ', '; }               foundMatches[IPA_match] = 1; helpText += IPA_match + ' ' + IPAkey[IPA_match]; }       }        if (helpText != '') { span.title += ': ' + helpText; }   } }

function IPA_getInnerText(el) { if (typeof el == "string") return el; if (typeof el == "undefined") { return el }; if (el.innerText) return el.innerText; // Not needed but it is faster var str = "";

var cs = el.childNodes; var l = cs.length; for (var i = 0; i < l; i++) { switch (cs[i].nodeType) { case 1: //ELEMENT_NODE str += IPA_getInnerText(cs[i]); break; case 3: //TEXT_NODE str += cs[i].nodeValue; break; }   }    return str; }

$(IPAkeys);