Add toLong() method
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/93cf86d0 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/93cf86d0 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/93cf86d0 Branch: refs/heads/TINKERPOP-1489 Commit: 93cf86d005fb3c11b0687089d7e372f6d4149c5c Parents: f9f7033 Author: Jorge Bay Gondra <jorgebaygon...@gmail.com> Authored: Wed Nov 29 11:37:24 2017 +0100 Committer: Jorge Bay Gondra <jorgebaygon...@gmail.com> Committed: Fri Jan 19 09:30:17 2018 +0100 ---------------------------------------------------------------------- gremlin-javascript/glv/PackageJson.template | 2 +- .../main/javascript/gremlin-javascript/index.js | 4 +++- .../gremlin-javascript/lib/structure/graph.js | 1 - .../lib/structure/io/graph-serializer.js | 21 ++++++++++++++++++-- .../javascript/gremlin-javascript/lib/utils.js | 11 ++++++++++ .../javascript/gremlin-javascript/package.json | 2 +- .../test/cucumber/feature-steps.js | 6 ++++-- 7 files changed, 39 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/93cf86d0/gremlin-javascript/glv/PackageJson.template ---------------------------------------------------------------------- diff --git a/gremlin-javascript/glv/PackageJson.template b/gremlin-javascript/glv/PackageJson.template index 4f1ac05..1b54a87 100644 --- a/gremlin-javascript/glv/PackageJson.template +++ b/gremlin-javascript/glv/PackageJson.template @@ -49,7 +49,7 @@ }, "scripts": { "test": "./node_modules/.bin/mocha test/unit test/integration -t 5000", - "features": "./node_modules/.bin/cucumber.js --require test/cucumber ../../../../../gremlin-test/features/map/AddVertex.feature", + "features": "./node_modules/.bin/cucumber.js --require test/cucumber ../../../../../gremlin-test/features/", "unit-test": "./node_modules/.bin/mocha test/unit" }, "engines": { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/93cf86d0/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js index 600ac53..61ab274 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js @@ -29,6 +29,7 @@ var graph = require('./lib/structure/graph'); var gs = require('./lib/structure/io/graph-serializer'); var rc = require('./lib/driver/remote-connection'); var Bytecode = require('./lib/process/bytecode'); +var utils = require('./lib/utils'); module.exports = { driver: { @@ -68,6 +69,7 @@ module.exports = { Path: graph.Path, Property: graph.Property, Vertex: graph.Vertex, - VertexProperty: graph.VertexProperty + VertexProperty: graph.VertexProperty, + toLong: utils.toLong } }; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/93cf86d0/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js index 95fd30f..cbb7e2c 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js @@ -23,7 +23,6 @@ 'use strict'; var gt = require('../process/graph-traversal'); -var t = require('../process/traversal'); var TraversalStrategies = require('../process/traversal-strategy').TraversalStrategies; var utils = require('../utils'); var inherits = utils.inherits; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/93cf86d0/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.js index ff3d72d..8e4ad5e 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.js @@ -24,7 +24,8 @@ var t = require('../../process/traversal'); var Bytecode = require('../../process/bytecode'); -var g = require('../graph.js'); +var g = require('../graph'); +var utils = require('../../utils'); /** * A type serializer @@ -67,7 +68,8 @@ var serializers = [ LambdaSerializer, EnumSerializer, VertexSerializer, - EdgeSerializer + EdgeSerializer, + LongSerializer ]; /** @@ -210,6 +212,21 @@ NumberSerializer.prototype.canBeUsedFor = function (value) { return (typeof value === 'number'); }; +function LongSerializer() { + +} + +NumberSerializer.prototype.serialize = function (item) { + return { + [typeKey]: 'g:Int64', + [valueKey]: item.value + }; +}; + +NumberSerializer.prototype.canBeUsedFor = function (value) { + return (value instanceof utils.Long); +}; + function BytecodeSerializer() { } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/93cf86d0/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/utils.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/utils.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/utils.js index 7691dda..cbaa53e 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/utils.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/utils.js @@ -59,4 +59,15 @@ exports.resolvedPromise = function (promiseFactory) { var toPromise = exports.toPromise = function toPromise(promiseFactory, handler) { promiseFactory = promiseFactory || defaultPromiseFactory; return promiseFactory(handler); +}; + +exports.toLong = function toLong(value) { + return new Long(value); +}; + +var Long = exports.Long = function Long(value) { + if (typeof value !== 'string' && typeof value !== 'number') { + throw new TypeError('Ty') + } + this.value = value.toString(); }; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/93cf86d0/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json b/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json index 7c4a3d6..aae9eb9 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json @@ -30,7 +30,7 @@ }, "scripts": { "test": "./node_modules/.bin/mocha test/unit test/integration -t 5000", - "features": "./node_modules/.bin/cucumber.js --require test/cucumber ../../../../../gremlin-test/features/map/AddVertex.feature", + "features": "./node_modules/.bin/cucumber.js --require test/cucumber ../../../../../gremlin-test/features/", "unit-test": "./node_modules/.bin/mocha test/unit" }, "engines": { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/93cf86d0/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js index 06a3283..12bc835 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js @@ -29,6 +29,7 @@ const util = require('util'); const graphModule = require('../../lib/structure/graph'); const graphTraversalModule = require('../../lib/process/graph-traversal'); const traversalModule = require('../../lib/process/traversal'); +const utils = require('../../lib/utils'); const Graph = graphModule.Graph; const Path = graphModule.Path; const __ = graphTraversalModule.statics; @@ -185,6 +186,7 @@ function getSandbox(g, parameters) { Scope: traversalModule.scope, Operator: traversalModule.operator, T: traversalModule.t, + toLong: utils.toLong }; // Pass the parameter to the sandbox Object.keys(parameters).forEach(paramName => sandbox[paramName] = parameters[paramName]); @@ -194,8 +196,8 @@ function getSandbox(g, parameters) { function translate(traversalText) { // Remove escaped chars traversalText = traversalText.replace(/\\"/g, '"'); - // Remove long suffix - traversalText = traversalText.replace(/\b(\d+)l\b/gi, '$1'); + // Replace long suffix with Long instance + traversalText = traversalText.replace(/\b(\d+)l\b/gi, 'toLong($1)'); // Change according to naming convention traversalText = traversalText.replace(/\.in\(/g, '.in_('); traversalText = traversalText.replace(/\.from\(/g, '.from_(');