User:Manishearth/purger.js

/* My script purger for developers This script will bypass your browser's cache for only the scripts listed in a cookie. This speeds up development. For this script to work, all the imports you want this to apply to should go to Special:MyPage/imports.js ADD ALL IMPORTS THERE, even ones you don't want purged. This script will purge the scripts in the cookie and no more. The imports.js subpage is only so that the imports are executed after this script is executed.



//Init stuff, nothing important if(!readCookie("devMode")){ createCookie("devMode","",365) } addOnloadHook(function{

mw.util.addPortletLink("p-tb","javascript:createCookie('devMode',prompt('Change the autopurge pages: (Separate the script names with commas, please). \n Do NOT press cancel, or all the data in the cookie will be erased. Instead, press Ok.',readCookie('devMode')),365)","Purge scripts") // Sets the cookie with a prompt if clicked, the default text of the prompt is the current value of the cookie

});

//OVERRIDE importScript function importScript(page) { // copy of importScript, except it allows purging var devTail="&rand="+parseInt(Math.random*100000); //A random tail devTail2=(readCookie("devMode").toLowerCase.indexOf(page.toLowerCase)!=-1)?devTail :''; //Decide if the cookie tells us to purge var uri = mw.config.get('wgScript') + '?title=' +encodeURIComponent(page.replace(/ /g,'_')).replace(/%2F/ig,'/').replace(/%3A/ig,':') + '&action=raw&ctype=text/javascript'+devTail2; //Add the tail return mw.loader.load(uri); }

var undefined; function importScriptPurged(page,seed) { if(seed===undefined){seed=parseInt(Math.random*10000)} var devTail="&rand="+seed; var uri = mw.config.get('wgScript') + '?title=' +encodeURIComponent(page.replace(/ /g,'_')).replace(/%2F/ig,'/').replace(/%3A/ig,':') + '&action=raw&ctype=text/javascript'+devTail; return mw.loader.load(uri); }

//Force purge imports.js, any changes made there will go live immediately importScriptPurged("User:"+mw.config.get('wgUserName')+"/imports.js")

function createCookie(name,value,days) { if (days) { var date = new Date; date.setTime(date.getTime+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString; }	else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; }

function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); }	return null; }