/* stringify */ function stringify(arg) { var c, i, l, o, u, v; switch (typeof arg) { case 'object': if (arg) { if (arg.constructor == Array) { o = ''; for (i = 0; i < arg.length; ++i) { v = stringify(arg[i]); if (o) { o += ','; } if (v !== u) { o += v; } else { o += 'null,'; } } return '[' + o + ']'; } else if (typeof arg.toString != 'undefined') { o = ''; for (i in arg) { v = stringify(arg[i]); if (v !== u) { if (o) { o += ','; } o += stringify(i) + ':' + v; } } return '{' + o + '}'; } else { return; } } return 'null'; case 'unknown': case 'undefined': case 'function': return u; case 'string': l = arg.length; o = '"'; for (i = 0; i < l; i += 1) { c = arg.charAt(i); if (c >= ' ') { if (c == '\\' || c == '"') { o += '\\'; } o += c; } else { switch (c) { case '\b': o += '\\b'; break; case '\f': o += '\\f'; break; case '\n': o += '\\n'; break; case '\r': o += '\\r'; break; case '\t': o += '\\t'; break; default: c = c.charCodeAt(); o += '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16); } } }
return o + '"'; default: return String(arg); } }