Jump to content

User:PC-XT/JSubst.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
(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<template.length;T++){
t=template[T][0].substring(0,1);
re=new RegExp("(\\{\\{"+(P.requirePrefix?prefix+"\\:":"("+prefix+"\\:)?")+")["+t.toUpperCase()+t.toLowerCase()+"]"+template[T][0].substring(1)+"\\W*[|}]","g");
while((st=text.search(re))>=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:"{{{"+k+"}}}";})+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]]*/))