Marek Kotewicz
10 years ago
4 changed files with 104 additions and 0 deletions
@ -0,0 +1,7 @@ |
|||||
|
|
||||
|
set(pretty_print "${CMAKE_CURRENT_LIST_DIR}/PrettyPrint.js") |
||||
|
|
||||
|
set(ETH_RESOURCE_NAME "JSEngineResources") |
||||
|
set(ETH_RESOURCE_LOCATION "${CMAKE_CURRENT_BINARY_DIR}") |
||||
|
set(ETH_RESOURCES "pretty_print") |
||||
|
|
@ -0,0 +1,88 @@ |
|||||
|
var prettyPrint = (function () { |
||||
|
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 += "\033[31m" + "Error:\033[0m " + object.message; |
||||
|
} else if (isBigNumber(object)) { |
||||
|
str += "\033[32m'" + 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 += "\033[32m'" + object + "'"; |
||||
|
} else if(typeof(object) === "undefined") { |
||||
|
str += "\033[1m\033[30m" + object; |
||||
|
} else if(typeof(object) === "number") { |
||||
|
str += "\033[31m" + object; |
||||
|
} else if(typeof(object) === "function") { |
||||
|
str += "\033[35m[Function]"; |
||||
|
} else { |
||||
|
str += object; |
||||
|
} |
||||
|
str += "\033[0m"; |
||||
|
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 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; |
||||
|
})(); |
Loading…
Reference in new issue