Skip to content

Instantly share code, notes, and snippets.

@alexortiz201
Created March 20, 2014 18:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexortiz201/9671230 to your computer and use it in GitHub Desktop.
Save alexortiz201/9671230 to your computer and use it in GitHub Desktop.
stash.min.js with a minor edit prevent IE8 from blowing up
// Stash v1.2.4 MIT/GPL2 @rezitech
(function(a,b,c){function k(a,c,e){var f=b[a],g;if(e){g=i(f);if(d(Array,g))c=g.concat(c);else if(d(Boolean,g))c=g&&!!c;else if(d(Date,g)&&!isNaN(c*1))c=new Date(g.getTime()+c*1);else if(d(Function,g)&&d(Function,c))c=new Function("return("+String(g)+").apply(this, arguments)&&("+String(c)+").apply(this, arguments)");else if(d(Number,g)&&!isNaN(c*1))c=g+c*1;else if(d(Object,g)&&d(Object,c))c=j(g,c);else if(d(RegExp,g)&&d(RegExp,c)){var k=/^\/([\W\w]*)\/([a-z]*?)$/,l=String(g).match(k),m=String(c).match(k);c=new RegExp(l[1]+m[1],l[2]+m[2])}else if(d(String,g))c=g+String(c);else return 2}c=h(c);if(f===c)return 2;return(b[a]=c)&&1}function j(){var a={},b=arguments,c=b.length,e=-1,f;while(++e<c)if(d(Object,b[e]))for(f in b[e])a[f]=d(Object,a[f])&&d(Object,b[e][f])?b.callee(a[f],b[e][f]):b[e][f];return a}function i(b){return(new Function("var a=arguments;h=a[0];return "+b)).apply(a,[f])}function h(b){var f=arguments.callee,h=[],i,j=-1,k;if(d(String,b))return e(b);if(b===undefined||b===null||d(Boolean,b)||d(Number,b)||d(RegExp,b)||d(Function,b)&&!/^function[^\{]+\{\s*\[native code\]/.test(String(b)))return String(b);if(d(Date,b)){return"new Date("+b.getTime()+")"}if(d(Array,b)){i=b.length;while(++j<i)h.push(f(b[j]));return"["+h+"]"}if(d(Object,b)){for(k in b)h.push(e(k)+":"+f(b[k]));return"{"+h+"}"}if(b===a)return"window";for(k in a)if(b===a[k])return"window."+k;for(k in c)if(b===c[k])return"document."+k;if(b.nodeName)return"h("+e(g(b))+")"}function g(a){if(a.outerHTML)return a.outerHTML;var b=c.createElement("_");b.appendChild(a.cloneNode(true));return b.innerHTML}function f(a){var b=c.createElement("_");b.innerHTML=a;return b.firstChild}function e(a){return"'"+String(a).replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")+"'"}function d(a,b){return b!==undefined&&b!==null&&b.constructor===a}a.stash={has:function(){var a=[].concat.apply([],arguments),c,d=-1;while(c=a[++d])if(b[c]===undefined)return false;return true},get:function(a){var c=[].concat.apply([],arguments),d,e=-1,f={};if(c.length===1)return i(b[a]);while(d=c[++e])f[d]=i(b[d]);return f},getAll:function(){var a,c={};for(a in b)c[a]=b[a];return c},set:function(a,b){var c=[].concat.apply([],arguments),e,f=-1,g,h=2;if(d(String,a))return k(a,b);while(e=c[++f])for(g in e)h=Math.min(h,k(g,e[g]));return h},add:function(a,b){var c=[].concat.apply([],arguments),e,f=-1,g,h=2;if(d(String,a))return k(a,b,true);while(e=c[++f])for(g in e)h=Math.min(h,k(g,e[g],true));return h},cut:function(a){var c=[].concat.apply([],arguments),d,e=-1;while(d=c[++e])try{delete b[d]}catch(e){};return true},cutAll:function(){for(var a in b)delete b[a];return true}}})(this,this.localStorage,document)
@alexortiz201
Copy link
Author

IE8 seems to blow up with delete so the quick fix around that was to wrap in try{}catch{}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment