tnetstrings
Version:
A fully-featured tnetstrings library, isomorphic to JSON
1 lines • 1.82 kB
JavaScript
var TNETS=function(){var a,b,c,d,e,f,g,h,i,j,k=function(a,b){if(!a)throw b};return typeof Array.isArray=="function"?c=Array.isArray:c=function(a){return Object.prototype.toString.call(a)==="[object Array]"},i=function(a){var b,c,d,e,f,g;return k(a,"invalid data to parseChunk, it's empty."),b=a.indexOf(":"),k(b>0,"invalid length spec"),d=a.slice(0,b),c=a.slice(b+1),k(!/\D/.test(d),"non-numeric characters in length spec"),d=+d,e=c.slice(0,d),f=c.charAt(d),g=c.slice(d+1),[e,f,g]},e=function(a){var b,c,d=[];while(a.length>0)c=f(a),b=c[0],a=c[1],d[d.length]=b;return d},h=function(a){var b,c,d=f(a),e=d[0],g=d[1];return k(g.length,"Unbalanced dictionary"),c=f(g),b=c[0],g=c[1],[e,b,g]},g=function(a){var b,c,d,e={};while(a.length>0)d=h(a),b=d[0],c=d[1],a=d[2],e[b]=c;return e},a=function(a){var b,c=function(){var c,d,e=[];for(c=0,d=a.length;c<d;c++)b=a[c],e.push(j(b));return e}().join("");return""+c.length+":"+c+"]"},b=function(a){var b,c,d=function(){var d=[];for(b in a)c=a[b],d.push(j(b)+j(c));return d}().join("");return""+d.length+":"+d+"}"},f=function(a){var b=i(a),c=b[0],d=b[1],f=b[2],h=function(){switch(d){case"#":case"^":return+c;case"}":return g(c);case"]":return e(c);case"!":return c==="true";case",":return c;case"~":return k(c.length===0,"payload size must be zero for null"),null;default:return k(!1,"invalid payload type: "+d)}}();return[h,f]},d=function(a){return f(a)[0]},j=function(d,e){var f;return e||(e={}),d==null?"0:~":(k(typeof d!="function","TNETS can't stringify a function"),typeof d=="string"||d instanceof String?""+d.length+":"+d+",":typeof d=="number"?(f=Math.floor(d)===d&&e.type!=="float"?"#":"^",d=""+d,""+d.length+":"+d+f):typeof d=="boolean"?(d=""+d,""+d.length+":"+d+"!"):c(d)?a(d):b(d))},{parse:d,parseChunk:f,stringify:j}}();typeof exports!="undefined"&&(exports.TNETS=TNETS);