1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

try to fix debug node non-standard object type handling.

This commit is contained in:
Dave Conway-Jones 2015-10-10 22:41:07 +01:00
parent 1bf72a0bc3
commit 61045ddd7f
2 changed files with 11 additions and 11 deletions

View File

@ -86,15 +86,12 @@ module.exports = function(RED) {
msg.msg = msg.msg.toString('hex'); msg.msg = msg.msg.toString('hex');
} else if (typeof msg.msg === 'object') { } else if (typeof msg.msg === 'object') {
var seen = []; var seen = [];
msg.format = "object"; msg.format = msg.msg.constructor.name || "Object";
var isArray = util.isArray(msg.msg); var isArray = util.isArray(msg.msg);
if (!isArray && msg.msg.toString !== Object.prototype.toString) {
msg.format = msg.msg.constructor.name || "object";
msg.msg = msg.msg.toString();
} else {
if (isArray) { if (isArray) {
msg.format = "array ["+msg.msg.length+"]"; msg.format = "array ["+msg.msg.length+"]";
} }
if (isArray || (msg.format === "Object")) {
msg.msg = JSON.stringify(msg.msg, function(key, value) { msg.msg = JSON.stringify(msg.msg, function(key, value) {
if (typeof value === 'object' && value !== null) { if (typeof value === 'object' && value !== null) {
if (seen.indexOf(value) !== -1) { return "[circular]"; } if (seen.indexOf(value) !== -1) { return "[circular]"; }
@ -102,6 +99,9 @@ module.exports = function(RED) {
} }
return value; return value;
}," "); }," ");
} else {
try { msg.msg = msg.msg.toString(); }
catch(e) { msg.msg = "[Type not printable]"; }
} }
seen = null; seen = null;
} else if (typeof msg.msg === "boolean") { } else if (typeof msg.msg === "boolean") {

View File

@ -94,7 +94,7 @@ describe('debug node', function() {
}, function(msg) { }, function(msg) {
JSON.parse(msg).should.eql({ JSON.parse(msg).should.eql({
topic:"debug", topic:"debug",
data:{id:"n1",msg:'{\n "payload": "test"\n}',format:"object"} data:{id:"n1",msg:'{\n "payload": "test"\n}',format:"Object"}
}); });
}, done); }, done);
}); });
@ -179,7 +179,7 @@ describe('debug node', function() {
}, function(msg) { }, function(msg) {
JSON.parse(msg).should.eql({ JSON.parse(msg).should.eql({
topic:"debug", topic:"debug",
data:{id:"n1",msg:'{\n "type": "foo"\n}',property:"payload",format:"object"} data:{id:"n1",msg:'{\n "type": "foo"\n}',property:"payload",format:"Object"}
}); });
}, done); }, done);
}); });
@ -215,7 +215,7 @@ describe('debug node', function() {
data:{ data:{
id:"n1", id:"n1",
msg:'{\n "name": "bar",\n "o": "[circular]"\n}', msg:'{\n "name": "bar",\n "o": "[circular]"\n}',
property:"payload",format:"object" property:"payload",format:"Object"
} }
}); });
}, done); }, done);