Created
March 20, 2014 18:56
-
-
Save alexortiz201/9671230 to your computer and use it in GitHub Desktop.
stash.min.js with a minor edit prevent IE8 from blowing up
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
IE8 seems to blow up with delete so the quick fix around that was to wrap in try{}catch{}