You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by co...@apache.org on 2024/10/16 19:22:11 UTC
(tinkerpop) branch 3.6-dev updated: CTR TINKERPOP-3077 Javascript translator incorrectly handle quotes, null and undefined values
This is an automated email from the ASF dual-hosted git repository.
colegreer pushed a commit to branch 3.6-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/3.6-dev by this push:
new 67a0d2769f CTR TINKERPOP-3077 Javascript translator incorrectly handle quotes, null and undefined values
67a0d2769f is described below
commit 67a0d2769fe079fa345eac778bf112e69e251684
Author: Cole-Greer <Co...@improving.com>
AuthorDate: Wed Oct 16 11:51:58 2024 -0700
CTR TINKERPOP-3077 Javascript translator incorrectly handle quotes, null and undefined values
---
.../gremlin-javascript/lib/process/translator.js | 6 +++---
.../gremlin-javascript/test/unit/translator-test.js | 21 +++++++++++++++++++++
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/translator.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/translator.js
index bb6a5d0645..7eceb258c4 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/translator.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/translator.js
@@ -106,12 +106,12 @@ class Translator {
} else {
script += anyObject.toString();
}
- } else if (anyObject === undefined) {
- script += '';
+ } else if (anyObject === undefined || anyObject === null) {
+ script += 'null';
} else if (typeof anyObject === 'number' || typeof anyObject === 'boolean') {
script += anyObject;
} else {
- script += `'${anyObject}'`;
+ script += `'${`${anyObject}`.replace("'", "\\'")}'`; // eslint-disable-line quotes
}
return script;
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/translator-test.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/translator-test.js
index 476390538a..986dbd161a 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/translator-test.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/translator-test.js
@@ -112,5 +112,26 @@ describe('Translator', function () {
assert.ok(script);
assert.strictEqual(script, 'g.V([1, 2, 3])');
});
+
+ it('should translate null', function () {
+ const g = new graph.Graph().traversal();
+ const script = new Translator('g').translate(g.addV('test').property('empty', null));
+ assert.ok(script);
+ assert.strictEqual(script, 'g.addV(\'test\').property(\'empty\', null)');
+ });
+
+ it('should translate undefined to null', function () {
+ const g = new graph.Graph().traversal();
+ const script = new Translator('g').translate(g.addV('test').property('empty', undefined));
+ assert.ok(script);
+ assert.strictEqual(script, 'g.addV(\'test\').property(\'empty\', null)');
+ });
+
+ it('should properly escape quotes in string literals', function () {
+ const g = new graph.Graph().traversal();
+ const script = new Translator('g').translate(g.addV('test').property('quotes', "some \"quotes' in the middle."));
+ assert.ok(script);
+ assert.strictEqual(script, 'g.addV(\'test\').property(\'quotes\', \'some "quotes\\\' in the middle.\')');
+ });
});
});