var prettyPrint = (function () { var onlyDecentPlatform = function (x) { return env.os.indexOf('Windows') === -1 ? x : ''; }; var color_red = onlyDecentPlatform('\033[31m'); var color_green = onlyDecentPlatform('\033[32m'); var color_pink = onlyDecentPlatform('\033[35m'); var color_white = onlyDecentPlatform('\033[0m'); var color_blue = onlyDecentPlatform('\033[30m'); function pp(object, indent) { try { JSON.stringify(object) } catch(e) { return pp(e, indent); } var str = ""; if(object instanceof Array) { str += "["; for(var i = 0, l = object.length; i < l; i++) { str += pp(object[i], indent); if(i < l-1) { str += ", "; } } str += " ]"; } else if (object instanceof Error) { str += color_red + "Error: " + color_white + object.message; } else if (object === null) { str += color_blue + "null"; } else if(typeof(object) === "undefined") { str += color_blue + object; } else if (isBigNumber(object)) { str += color_green + object.toString(10) + "'"; } else if(typeof(object) === "object") { str += "{\n"; indent += " "; var last = getFields(object).pop() getFields(object).forEach(function (k) { str += indent + k + ": "; try { str += pp(object[k], indent); } catch (e) { str += pp(e, indent); } if(k !== last) { str += ","; } str += "\n"; }); str += indent.substr(2, indent.length) + "}"; } else if(typeof(object) === "string") { str += color_green + object + "'"; } else if(typeof(object) === "number") { str += color_red + object; } else if(typeof(object) === "function") { str += color_pink + "[Function]"; } else { str += object; } str += color_white; return str; } var redundantFields = [ 'valueOf', 'toString', 'toLocaleString', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor', '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', '__proto__' ]; var getFields = function (object) { var result = Object.getOwnPropertyNames(object); if (object.constructor && object.constructor.prototype) { result = result.concat(Object.getOwnPropertyNames(object.constructor.prototype)); } return result.filter(function (field) { return redundantFields.indexOf(field) === -1; }); }; var isBigNumber = function (object) { return (!!object.constructor && object.constructor.name === 'BigNumber') || (typeof BigNumber !== 'undefined' && object instanceof BigNumber) }; function prettyPrintInner(/* */) { var args = arguments; var ret = ""; for(var i = 0, l = args.length; i < l; i++) { ret += pp(args[i], "") + "\n"; } return ret; }; return prettyPrintInner; })();