MediaWiki:Gadget-bracketmatch.js

try { // containerize gadget, to protect other gadgets if this one goes wrong

// w:User:ais523/bracketmatch.js - Colour matching brackets in a copy of the edit box. // By w:User:ais523, on a suggestion by w:User:Absidy. // What this does is add a "parse" link on the top of the edit box. Clicking on it will make a copy of the edit box appear // but where the "Show Preview" section normally is. Where the various 🇦🇩 are, it will make the matching ones // different colours for ease of reference. $(function{ var p=document.getElementById('wikiPreview');  if(p==null) p=document.getElementById('viewsourcetext');  if(p)    p.innerHTML+="Parse "; }); function bm_parsebrackets { var t=document.getElementById('wpTextbox1').value; var a=sajax_init_object; var p='action=expandtemplates&generatexml=1&format=json&callback=bm_callback&text='+encodeURIComponent(t); a.open('POST', mw.config.get('wgServer')+ mw.config.get('wgScriptPath')+'/api.php'); a.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); a.setRequestHeader("Content-length", p.length); a.setRequestHeader("Connection", "close"); a.onreadystatechange=function{bm_apirespond(a)}; a.send(p); } function bm_apirespond(a) { try {   if(a.readyState==4) eval(a.responseText); } catch(e) {   document.getElementById('bm_parseres').innerHTML= "Could not parse due to a server error. Parse"; } } var colang; function bm_hexdigit(n) { var i=Math.floor(n); if(i<10) return i+''; if(i==10) return 'A'; if(i==11) return 'B'; if(i==12) return 'C'; if(i==13) return 'D'; if(i==14) return 'E'; if(i==15) return 'F'; } function bm_tohex(n) { var i=Math.floor(n); return bm_hexdigit(i/16)+bm_hexdigit(i%16); } function bm_gencol(ang) { var r=Math.sin(ang)+1; var g=Math.sin(ang+3.14159*2/3)+1; var b=Math.sin(ang-3.14159*2/3)+1; return bm_tohex(r*127.5)+bm_tohex(g*127.5)+bm_tohex(b*127.5); } function bm_callback(o) { var subs={"tplarg":"", "template":"", "part":"|", "ext":"&"+"lt;", "/attr":"&"+"gt;", "attr/":"&"+"gt;"}; var h=o.parsetree["*"].split("<"); var i=h.length; var r; var n;  var sp=0; var st=new Array; var col; colang=0; while(--i) {   col=""; n=1; h[i]=h[i].split(">"); h[i][0]=h[i][0].split(" "); r=subs[h[i][0][0]]; if(r==undefined) r=""; if(r=='}}}'||r=='}}') {     st[sp]=bm_gencol(colang); col=st[sp]; sp++; colang+=2.4; //golden angle in radians, approx }   else if(r=='{{{'||r=='{{') {     sp--; col=st[sp]; n=2; }   if(col!="") r=""+r+" "; h[i][0]=r; h[i]=h[i].join(""); } document.getElementById('bm_parseres').innerHTML= " "+h.join("").split("\n").join(" ")+ " Parse "; } function bm_highlight(x,c) { document.getElementById('bm_f'+x+'1').style.backgroundColor=c; document.getElementById('bm_f'+x+'2').style.backgroundColor=c; if(c=="black") window.setTimeout("bm_highlight('"+x+"','transparent')",3000); } //test: {{{a|b}}} {{a|b}} {{c|{{e|a=b|3=c}}|f}} //test: f g h //test: i {{{{{{{{j}}}}}}}} /* test: {{startofline}}

} catch (e) { // containerize gadget, to protect other gadgets if this one goes wrong // ignore }