User:PC-XT/JSubst.js

(function{var P={list:[]},f=0, set=function(p,v){if(typeof p=="undefined")return;if(typeof p=="object")for(var i in p)set1(i,p[i]);else set1(p,v);}, set1=function(p,v){if(p=="list"){P.list=[];return addList(v);}if(p=="addList")return addList(v);P[p]=v;}, addList=function(a){var p=typeof a=="object"?a:[a],i;for(i in p)if((typeof p[i]=="object"?p[i]:p[i]=[p[i]]).length>1)P.list[P.list.length]=p[i];/*else if(Template[p[i][0]])addList(Template[p[i][0]]);/*else importScript(p[i][0].match(/^user\:.*\.js$/i)?p[i][0]:"User:PC-XT/JSubst/"+p[i][0]+".js");*/}, subst=function(x){set(x);var box=document.getElementById("wpTextbox1"),text=box.value,T,re,st,nd,np,p,pn,t2,t3,t,ttt,template=P.onlyList?p.onlyList:P.list ,prefix=P.prefix?P.prefix:"([Jj]?[Ss][Uu][Bb][Ss][Tt])" ,pnam=function{var t,n; if(p[pn].length&&(t=p[pn].search(/\W*$/))>0)p[pn]=p[pn].substring(0,t); if((t=p[pn].indexOf("="))>=0){ p[n=p[pn].substring(0,p[pn].search(/\W*=/))]=p[pn].substring(t+1); if(p[n].length&&(t=p[n].search(/[^\W]/))>0)p[n]=p[n].substring(t); if(n==pn)pn++;else p[pn]=""; }else p[++pn]=""; }; for(T=0;T=0){ np=st+2;p=[""];pn=t2=t3=0; nd=5000+(new Date); while(1)if(nd>(new Date)){if(P.alert)alert("User:PC-XT/JSubst Script timeout error");return false;}else if(np>=text.length){if(P.alert)alert("{{JSubst:"+template[T][0]+"|... isn't closed. This template starts at position "+st+".");return false;} else if((ttt=text.substring(np,np+3))=="{{{"){t3++;np+=3;} else if((t=ttt.substring(0,2))=="{{"){t2++;np+=2;} else if(t=="}}"){ np+=2; if(t3>0&&ttt=="}}}"){t3--;np++;}else if(t2>0)t2--;else break; }else if(t2<1&&t3<1&&ttt.substring(0,1)=="|"){ pnam; np++;if(!text.substring(np,np+2).search(/^\W/))if((t=text.substring(np).search(/[^\W]/))>=0)np+=t;else np=text.length; }else p[pn]+=text.substring(np,++np); pnam; text=text.substring(0,st)+template[T][1](function(k,d){return typeof p[k]!="undefined"?p[k]:d?d:"";})+text.substring(np);}}box.value=text;}, auto=function(p){set(p);var hook=function{var ef;if(ef=document.getElementById("editform")){f=ef.onsubmit;ef.onsubmit=function(e1,e2,e3){subst;if(f)f(e1,e2,e3);};}};if(document.getElementById("editform"))hook;else addOnloadHook(hook);}; JSubst={auto:auto,set:set,subst:subst};}(/*linkback: User:PC-XT/JSubst*/))