aboutsummaryrefslogtreecommitdiffstats
path: root/jsre/pp_js.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-06-10 03:12:25 +0800
committerobscuren <geffobscura@gmail.com>2015-06-10 03:12:25 +0800
commitbac9a94ddf20dc530966cbf6cd384aaf94aedc77 (patch)
tree0ced967e60315698cc5056a984d7678c417bc1ce /jsre/pp_js.go
parent0e703d92ac9df61e2ededa8c895c70ded101a607 (diff)
parent14994fa21bf6f05554ff370d41005d06b68d20a5 (diff)
downloadgo-tangerine-bac9a94ddf20dc530966cbf6cd384aaf94aedc77.tar
go-tangerine-bac9a94ddf20dc530966cbf6cd384aaf94aedc77.tar.gz
go-tangerine-bac9a94ddf20dc530966cbf6cd384aaf94aedc77.tar.bz2
go-tangerine-bac9a94ddf20dc530966cbf6cd384aaf94aedc77.tar.lz
go-tangerine-bac9a94ddf20dc530966cbf6cd384aaf94aedc77.tar.xz
go-tangerine-bac9a94ddf20dc530966cbf6cd384aaf94aedc77.tar.zst
go-tangerine-bac9a94ddf20dc530966cbf6cd384aaf94aedc77.zip
Merge branch 'release/0.9.28'v0.9.28
Diffstat (limited to 'jsre/pp_js.go')
-rw-r--r--jsre/pp_js.go39
1 files changed, 28 insertions, 11 deletions
diff --git a/jsre/pp_js.go b/jsre/pp_js.go
index 5c09b2586..20821e4a1 100644
--- a/jsre/pp_js.go
+++ b/jsre/pp_js.go
@@ -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;
};