User:PerfektesChaos/js/versionControl/r.js

/// PerfektesChaos/js/versionControl/r.js /// 2018-08-24 PerfektesChaos@de.wikipedia /// Fingerprint:#0#85E48FCE# /// (function(mw,$){ "use strict"; var VC="versionControl"; if(typeof mw.libs[VC]!=="object"||!mw.libs[VC]){ mw.libs[VC]={};} mw.libs[VC].vsn=4.0; mw.libs[VC].type=VC; VC=mw.libs[VC]; if(!VC.debugging){ VC.debugging={loud:false};} if(VC.vsn<=0){ VC.debugging.loud=true;} VC.debugging.say="vc"; if(!VC.proj){ VC.proj={};} VC.selfID="user:PerfektesChaos/"+VC.type; VC.g={projname:mw.config.get("wgDBname"),username:mw.config.get("wgUserName")}; VC.doc="w:en:User:PerfektesChaos/js/"+VC.type+""; VC.feed=function{ var i; if(typeof(VC.config.signer)==="string"){ VC.exec.signer=VC.config.signer; }else{ VC.exec.signer=VC.g.username;} VC.exec.signer=mw.util.wikiUrlencode(VC.exec.signer); if(typeof(VC.config.store)==="string"){ VC.exec.store=VC.config.store; }else{ if(typeof(VC.g.userspace)!=="string"){ VC.g.userspace=mw.config.get("wgFormattedNamespaces"); VC.g.userspace=VC.g.userspace["2"];} VC.exec.store=VC.g.userspace+":"+VC.exec.signer+"/versionControl.js";} if(typeof(VC.config.symbol)==="string"){ VC.exec.symbol=VC.config.symbol; }else{ VC.exec.symbol="vc_"+VC.g.projname+"_"+VC.exec.signer;} if(VC.exec.symbol.indexOf("%")>=0){ VC.exec.symbol.replace("%","_");} if(typeof(VC.proj[VC.g.projname])!=="object"){ VC.proj[VC.g.projname]={};} if(typeof(VC.proj[VC.g.projname][VC.exec.signer])!=="object"){ VC.proj[VC.g.projname][VC.exec.signer]={};} VC.exec.deep=VC.proj[VC.g.projname][VC.exec.signer]; if(typeof VC.exec.deep.rv!=="object"){ if(typeof window[VC.exec.symbol]==="object"){ VC.exec.deep.rv=window[VC.exec.symbol];}} if(typeof(VC.exec.deep.rv)==="object"){ if($.isArray(VC.exec.deep.rv)){ if(!VC.exec.deep.rv.length){ VC.exec.deep.rv=false;} }else{ VC.exec.deep.rv=false;}} VC.exec.deep.store=VC.exec.store; if(typeof(VC.exec.deep.start)!=="string"){ i=VC.exec.deep.store.indexOf("/"); if(i>0){ VC.exec.deep.start=VC.exec.deep.store.substr(0,i+1); }else{ VC.exec.deep.start="";}} if(typeof(VC.exec.deep.rv)==="object"||typeof(VC.exec.deep.source)==="string"){ VC.fit; }else{ if(typeof(VC.api)!=="object"){ VC.api=new mw.Api;} VC.api.get({action:"raw",title:VC.exec.deep.store,format:"",maxage:0 },{url:mw.config.get("wgScript"),dataType:"text"}) .done(VC.fetched);} }; VC.fetch=function{ VC.api.get(VC.exec.query).done(VC.found); }; VC.fetched=function(arrived){ if(typeof(arrived)==="string"){ VC.exec.deep.source=arrived; VC.fit;} }; VC.finalize=function{ }; VC.fire=function{ var rls; if(!mw.loader.getState(VC.selfID)){ rls={}; rls[VC.selfID]="loading"; mw.loader.state(rls); if(typeof VC.exec!=="object"){ VC.exec={};} if(typeof VC.opt==="object"&&VC.opt){ VC.config=VC.opt; }else{ VC.config={};} rls[VC.selfID]="ready"; mw.loader.state(rls); VC.feed;} }; VC.fit=function{ var e,i,n,s,u; if(typeof this.exec.deep.rv!=="object"){ if(typeof window[VC.exec.symbol]==="object"){ this.exec.deep.rv=window[VC.exec.symbol];}} if(typeof this.exec.deep.rv==="object"){ if($.isArray(this.exec.deep.rv)){ if(!this.exec.deep.rv.length){ this.exec.deep.rv=false;} }else{ this.exec.deep.rv=false;}} if(typeof this.exec.deep.rv==="object"){ if(typeof this.exec.deep.source==="string"){ try{ eval(this.exec.deep.source); }catch(exc){ window.alert("mw.libs.versionControl.fit\n"+exc+" in "+this.exec.deep.store); return;}}} if(typeof this.exec.deep.rv==="object"){ n=this.exec.deep.rv.length; if(n>1){ s=this.exec.deep.store; u="|"+this.exec.deep.start; for(i=1;i<n;i++){ e=this.exec.deep.rv[i][0]; s=s+u+mw.util.wikiUrlencode(e);} if(typeof this.api!=="object"){ this.api=new mw.Api;} this.exec.query={prop:"info",titles:s,indexpageids:true}; window.setTimeout(VC.fetch,5000); window.setTimeout(VC.fetch,30000);}} }; VC.format=function{ var d=new Date,e="[\""+d.toUTCString+"\"]",i,n=VC.exec.deep.updates.length,r="\\[\"[- 0-9:A-Z,a-z]+\"\\]",s=VC.exec.deep.source.replace(new RegExp(r,"g"),e),u; r="^\\[\"[- 0-9:A-Z,a-z]+\"\\]?$"; for(i=0;i<n;i++){ u=VC.exec.deep.updates[i]; e=VC.exec.deep.rv[u[0]]; r="(\\[\""+mw.RegExp.escape(e[0])+"\", *)"+"([0-9]+),?"+"( *)"+"(\"[-0-9:A-Z]*\")?"+"( *)"+"\\]"; d="$1"+u[1]+",$3\""+u[2]+"\"$5]"; s=s.replace(new RegExp(r,"g"),d); e[1]=u[1]; e[2]=u[2];} VC.exec.deep.source=s; VC.exec.edit={action:"edit",token:mw.user.tokens.get("csrfToken"),title:VC.exec.deep.store,text:VC.exec.deep.source,summary:"VersionControl "+VC.vsn,nocreate:true}; if(typeof(VC.api)!=="object"){ VC.api=new mw.Api;} VC.api.post(VC.exec.edit).done(VC.finalize); }; VC.found=function(arrived){ var i,j,k,m,n,p,query=(typeof(arrived)==="object"),s; if(query){ query=arrived.query;} if(query){ n=query.pageids.length; if(n){ k=VC.exec.deep.start.length; m=VC.exec.deep.rv.length; VC.exec.deep.updates=[]; for(i=0;i<n;i++){ s=query.pageids[i]; if(s.charCodeAt(0)!==45){ p=query.pages[s]; for(j=0;j<m;j++){ if(p.title.substr(k)===VC.exec.deep.rv[j][0]){ if(VC.exec.deep.rv[j][1]!==p.lastrevid){ p=[j,p.lastrevid,p.touched]; VC.exec.deep.updates=VC.exec.deep.updates.concat([p]);} break;}}}} if(VC.exec.deep.updates.length){ if(typeof(VC.exec.deep.source)==="string"){ VC.format; }else{ VC.exec.deep.rv=false; VC.feed;}}}} }; mw.loader.using(["user","mediawiki.api","mediawiki.RegExp","mediawiki.user","mediawiki.util"],VC.fire); }(window.mediaWiki,window.jQuery)); /// EOF versionControl/r.js