mirror of https://github.com/node-red/node-red.git
Add RED.util.get/setObjectProperty to avoid stripping msg.
parent
a2bdeedb09
commit
315a9ceba3
|
@ -235,10 +235,13 @@ function normalisePropertyExpression(str) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getMessageProperty(msg,expr) {
|
function getMessageProperty(msg,expr) {
|
||||||
var result = null;
|
|
||||||
if (expr.indexOf('msg.')===0) {
|
if (expr.indexOf('msg.')===0) {
|
||||||
expr = expr.substring(4);
|
expr = expr.substring(4);
|
||||||
}
|
}
|
||||||
|
return getObjectProperty(msg,expr);
|
||||||
|
}
|
||||||
|
function getObjectProperty(msg,expr) {
|
||||||
|
var result = null;
|
||||||
var msgPropParts = normalisePropertyExpression(expr);
|
var msgPropParts = normalisePropertyExpression(expr);
|
||||||
var m;
|
var m;
|
||||||
msgPropParts.reduce(function(obj, key) {
|
msgPropParts.reduce(function(obj, key) {
|
||||||
|
@ -249,12 +252,15 @@ function getMessageProperty(msg,expr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function setMessageProperty(msg,prop,value,createMissing) {
|
function setMessageProperty(msg,prop,value,createMissing) {
|
||||||
if (typeof createMissing === 'undefined') {
|
|
||||||
createMissing = (typeof value !== 'undefined');
|
|
||||||
}
|
|
||||||
if (prop.indexOf('msg.')===0) {
|
if (prop.indexOf('msg.')===0) {
|
||||||
prop = prop.substring(4);
|
prop = prop.substring(4);
|
||||||
}
|
}
|
||||||
|
return setObjectProperty(msg,prop,value,createMissing);
|
||||||
|
}
|
||||||
|
function setObjectProperty(msg,prop,value,createMissing) {
|
||||||
|
if (typeof createMissing === 'undefined') {
|
||||||
|
createMissing = (typeof value !== 'undefined');
|
||||||
|
}
|
||||||
var msgPropParts = normalisePropertyExpression(prop);
|
var msgPropParts = normalisePropertyExpression(prop);
|
||||||
var depth = 0;
|
var depth = 0;
|
||||||
var length = msgPropParts.length;
|
var length = msgPropParts.length;
|
||||||
|
@ -584,6 +590,8 @@ module.exports = {
|
||||||
generateId: generateId,
|
generateId: generateId,
|
||||||
getMessageProperty: getMessageProperty,
|
getMessageProperty: getMessageProperty,
|
||||||
setMessageProperty: setMessageProperty,
|
setMessageProperty: setMessageProperty,
|
||||||
|
getObjectProperty: getObjectProperty,
|
||||||
|
setObjectProperty: setObjectProperty,
|
||||||
evaluateNodeProperty: evaluateNodeProperty,
|
evaluateNodeProperty: evaluateNodeProperty,
|
||||||
normalisePropertyExpression: normalisePropertyExpression,
|
normalisePropertyExpression: normalisePropertyExpression,
|
||||||
normaliseNodeTypeName: normaliseNodeTypeName,
|
normaliseNodeTypeName: normaliseNodeTypeName,
|
||||||
|
|
|
@ -141,7 +141,15 @@ describe("red/util", function() {
|
||||||
cloned.res.should.equal(msg.res);
|
cloned.res.should.equal(msg.res);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
describe('getObjectProperty', function() {
|
||||||
|
it('gets a property beginning with "msg."', function() {
|
||||||
|
// getMessageProperty strips off `msg.` prefixes.
|
||||||
|
// getObjectProperty does not
|
||||||
|
var obj = { msg: { a: "foo"}, a: "bar"};
|
||||||
|
var v = util.getObjectProperty(obj,"msg.a");
|
||||||
|
v.should.eql("foo");
|
||||||
|
})
|
||||||
|
});
|
||||||
describe('getMessageProperty', function() {
|
describe('getMessageProperty', function() {
|
||||||
it('retrieves a simple property', function() {
|
it('retrieves a simple property', function() {
|
||||||
var v = util.getMessageProperty({a:"foo"},"msg.a");
|
var v = util.getMessageProperty({a:"foo"},"msg.a");
|
||||||
|
@ -169,7 +177,16 @@ describe("red/util", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
describe('setObjectProperty', function() {
|
||||||
|
it('set a property beginning with "msg."', function() {
|
||||||
|
// setMessageProperty strips off `msg.` prefixes.
|
||||||
|
// setObjectProperty does not
|
||||||
|
var obj = {};
|
||||||
|
util.setObjectProperty(obj,"msg.a","bar");
|
||||||
|
obj.should.have.property("msg");
|
||||||
|
obj.msg.should.have.property("a","bar");
|
||||||
|
})
|
||||||
|
});
|
||||||
describe('setMessageProperty', function() {
|
describe('setMessageProperty', function() {
|
||||||
it('sets a property', function() {
|
it('sets a property', function() {
|
||||||
var msg = {a:"foo"};
|
var msg = {a:"foo"};
|
||||||
|
|
Loading…
Reference in New Issue