Merge pull request #1213 from karalabe/polish-console-prettyprinter
jsre: patch up the pretty printer to have a decent look
This commit is contained in:
		
						commit
						fda49f2b52
					
				| @ -26,19 +26,19 @@ function pp(object, indent) { | ||||
|     } else if(typeof(object) === "object") { | ||||
|         str += "{\n"; | ||||
|         indent += "  "; | ||||
|         var last = getFields(object).pop() | ||||
|         getFields(object).forEach(function (k) { | ||||
|             str += indent + k + ": "; | ||||
| 
 | ||||
|         var fields = getFields(object); | ||||
|         var last   = fields[fields.length - 1]; | ||||
|         fields.forEach(function (key) { | ||||
|             str += indent + key + ": "; | ||||
|             try { | ||||
|                 str += pp(object[k], indent); | ||||
|                 str += pp(object[key], indent); | ||||
|             } catch (e) { | ||||
|                 str += pp(e, indent); | ||||
|             } | ||||
| 
 | ||||
|             if(k !== last) { | ||||
|             if(key !== last) { | ||||
|                 str += ","; | ||||
|             } | ||||
| 
 | ||||
|             str += "\n"; | ||||
|         }); | ||||
|         str += indent.substr(2, indent.length) + "}"; | ||||
| @ -49,7 +49,7 @@ function pp(object, indent) { | ||||
|     } else if(typeof(object) === "number") { | ||||
|         str += "\033[31m" + object; | ||||
|     } else if(typeof(object) === "function") { | ||||
|         str += "\033[35m[Function]"; | ||||
|         str += "\033[35m" + object.toString().split(" {")[0]; | ||||
|     } else { | ||||
|         str += object; | ||||
|     } | ||||
| @ -70,15 +70,32 @@ var redundantFields = [ | ||||
| ]; | ||||
| 
 | ||||
| var getFields = function (object) { | ||||
|     var result = Object.getOwnPropertyNames(object); | ||||
|     var members = Object.getOwnPropertyNames(object); | ||||
|     if (object.constructor && object.constructor.prototype) { | ||||
|         result = result.concat(Object.getOwnPropertyNames(object.constructor.prototype)); | ||||
|         members = members.concat(Object.getOwnPropertyNames(object.constructor.prototype)); | ||||
|     } | ||||
|     return result.filter(function (field) { | ||||
| 
 | ||||
|     var fields = members.filter(function (member) { | ||||
|         return !isMemberFunction(object, member) | ||||
|     }).sort() | ||||
|     var funcs = members.filter(function (member) { | ||||
|         return isMemberFunction(object, member) | ||||
|     }).sort() | ||||
| 
 | ||||
|     var results = fields.concat(funcs); | ||||
|     return results.filter(function (field) { | ||||
|         return redundantFields.indexOf(field) === -1; | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| var isMemberFunction = function(object, member) { | ||||
|     try { | ||||
|         return typeof(object[member]) === "function"; | ||||
|     } catch(e) { | ||||
|         return false; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| var isBigNumber = function (object) { | ||||
|     return typeof BigNumber !== 'undefined' && object instanceof BigNumber; | ||||
| }; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user