mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Handle more edge cases with RED.util.normalisePropertyExpression
This commit is contained in:
parent
8fb1c76247
commit
08ade44dc8
@ -32,7 +32,7 @@
|
|||||||
quoteChar = c;
|
quoteChar = c;
|
||||||
start = i+1;
|
start = i+1;
|
||||||
} else if (c === '.') {
|
} else if (c === '.') {
|
||||||
if (i===length-1) {
|
if (i===0 || i===length-1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Next char is a-z
|
// Next char is a-z
|
||||||
@ -65,6 +65,8 @@
|
|||||||
}
|
}
|
||||||
start = i+1;
|
start = i+1;
|
||||||
inBox = false;
|
inBox = false;
|
||||||
|
} else if (c === ' ') {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (c === quoteChar) {
|
if (c === quoteChar) {
|
||||||
|
@ -146,6 +146,9 @@ function normalisePropertyExpression(str) {
|
|||||||
quoteChar = c;
|
quoteChar = c;
|
||||||
start = i+1;
|
start = i+1;
|
||||||
} else if (c === '.') {
|
} else if (c === '.') {
|
||||||
|
if (i===0) {
|
||||||
|
throw new Error("Invalid property expression: unexpected . at position 0");
|
||||||
|
}
|
||||||
if (start != i) {
|
if (start != i) {
|
||||||
v = str.substring(start,i);
|
v = str.substring(start,i);
|
||||||
if (/^\d+$/.test(v)) {
|
if (/^\d+$/.test(v)) {
|
||||||
@ -192,6 +195,8 @@ function normalisePropertyExpression(str) {
|
|||||||
}
|
}
|
||||||
start = i+1;
|
start = i+1;
|
||||||
inBox = false;
|
inBox = false;
|
||||||
|
} else if (c === ' ') {
|
||||||
|
throw new Error("Invalid property expression: unexpected ' ' at position "+i);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (c === quoteChar) {
|
if (c === quoteChar) {
|
||||||
|
@ -346,6 +346,9 @@ describe("red/util", function() {
|
|||||||
it("fail [0]",function() { testInvalid("[0]"); })
|
it("fail [0]",function() { testInvalid("[0]"); })
|
||||||
it("fail a[0",function() { testInvalid("a[0"); })
|
it("fail a[0",function() { testInvalid("a[0"); })
|
||||||
it("fail a.",function() { testInvalid("a."); })
|
it("fail a.",function() { testInvalid("a."); })
|
||||||
|
it("fail .a",function() { testInvalid(".a"); })
|
||||||
|
it("fail a. b",function() { testInvalid("a. b"); })
|
||||||
|
it("fail a.b",function() { testInvalid(" a.b"); })
|
||||||
it("fail a[0].[1]",function() { testInvalid("a[0].[1]"); })
|
it("fail a[0].[1]",function() { testInvalid("a[0].[1]"); })
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user