You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by jo...@apache.org on 2017/11/30 13:48:24 UTC
[45/47] tinkerpop git commit: Use ES6 syntax
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js
index d887fe0..2877f02 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js
@@ -26,202 +26,209 @@ const utils = require('../utils');
const parseArgs = utils.parseArgs;
const itemDone = Object.freeze({ value: null, done: true });
-function Traversal(graph, traversalStrategies, bytecode) {
- this.graph = graph;
- this.traversalStrategies = traversalStrategies;
- this.bytecode = bytecode;
- /** @type {Array<Traverser>} */
- this.traversers = null;
- this.sideEffects = null;
- this._traversalStrategiesPromise = null;
- this._traversersIteratorIndex = 0;
-}
+class Traversal {
+ constructor(graph, traversalStrategies, bytecode) {
+ this.graph = graph;
+ this.traversalStrategies = traversalStrategies;
+ this.bytecode = bytecode;
+ /** @type {Array<Traverser>} */
+ this.traversers = null;
+ this.sideEffects = null;
+ this._traversalStrategiesPromise = null;
+ this._traversersIteratorIndex = 0;
+ }
-/** @returns {Bytecode} */
-Traversal.prototype.getBytecode = function () {
- return this.bytecode;
-};
+ /** @returns {Bytecode} */
+ getBytecode() {
+ return this.bytecode;
+ }
-/**
- * Returns an Array containing the traverser objects.
- * @returns {Promise.<Array>}
- */
-Traversal.prototype.toList = function () {
- return this._applyStrategies().then(() => {
- const result = [];
- let it;
- while ((it = this._getNext()) && !it.done) {
- result.push(it.value);
+ /**
+ * Returns an Array containing the traverser objects.
+ * @returns {Promise.<Array>}
+ */
+ toList() {
+ return this._applyStrategies().then(() => {
+ const result = [];
+ let it;
+ while ((it = this._getNext()) && !it.done) {
+ result.push(it.value);
+ }
+ return result;
+ });
+ };
+
+ /**
+ * Iterates all Traverser instances in the traversal.
+ * @returns {Promise}
+ */
+ iterate() {
+ return this._applyStrategies().then(() => {
+ let it;
+ while ((it = this._getNext()) && !it.done) {
+ }
+ });
+ }
+
+ /**
+ * Async iterator method implementation.
+ * Returns a promise containing an iterator item.
+ * @returns {Promise.<{value, done}>}
+ */
+ next() {
+ return this._applyStrategies().then(() => this._getNext());
+ }
+
+ /**
+ * Synchronous iterator of traversers including
+ * @private
+ */
+ _getNext() {
+ while (this.traversers && this._traversersIteratorIndex < this.traversers.length) {
+ let traverser = this.traversers[this._traversersIteratorIndex];
+ if (traverser.bulk > 0) {
+ traverser.bulk--;
+ return { value: traverser.object, done: false };
+ }
+ this._traversersIteratorIndex++;
}
- return result;
- });
-};
+ return itemDone;
+ }
-/**
- * Iterates all Traverser instances in the traversal.
- * @returns {Promise}
- */
-Traversal.prototype.iterate = function () {
- return this._applyStrategies().then(() => {
- let it;
- while ((it = this._getNext()) && !it.done) {
+ _applyStrategies() {
+ if (this._traversalStrategiesPromise) {
+ // Apply strategies only once
+ return this._traversalStrategiesPromise;
}
- });
-};
+ return this._traversalStrategiesPromise = this.traversalStrategies.applyStrategies(this);
+ }
-/**
- * Async iterator method implementation.
- * Returns a promise containing an iterator item.
- * @returns {Promise.<{value, done}>}
- */
-Traversal.prototype.next = function () {
- return this._applyStrategies().then(() => this._getNext());
-};
+ /**
+ * Returns the Bytecode JSON representation of the traversal
+ * @returns {String}
+ */
+ toString() {
+ return this.bytecode.toString();
+ };
+}
-/**
- * Synchronous iterator of traversers including
- * @private
- */
-Traversal.prototype._getNext = function () {
- while (this.traversers && this._traversersIteratorIndex < this.traversers.length) {
- let traverser = this.traversers[this._traversersIteratorIndex];
- if (traverser.bulk > 0) {
- traverser.bulk--;
- return { value: traverser.object, done: false };
+class P {
+ /**
+ * Represents an operation.
+ * @constructor
+ */
+ constructor(operator, value, other) {
+ this.operator = operator;
+ this.value = value;
+ this.other = other;
+ }
+
+ /**
+ * Returns the string representation of the instance.
+ * @returns {string}
+ */
+ toString() {
+ if (this.other === undefined) {
+ return this.operator + '(' + this.value + ')';
}
- this._traversersIteratorIndex++;
+ return this.operator + '(' + this.value + ', ' + this.other + ')';
}
- return itemDone;
-};
-Traversal.prototype._applyStrategies = function () {
- if (this._traversalStrategiesPromise) {
- // Apply strategies only once
- return this._traversalStrategiesPromise;
+ and(arg) {
+ return new P('and', this, arg);
}
- return this._traversalStrategiesPromise = this.traversalStrategies.applyStrategies(this);
-};
-/**
- * Returns the Bytecode JSON representation of the traversal
- * @returns {String}
- */
-Traversal.prototype.toString = function () {
- return this.bytecode.toString();
-};
+ or(arg) {
+ return new P('or', this, arg);
+ }
-/**
- * Represents an operation.
- * @constructor
- */
-function P(operator, value, other) {
- this.operator = operator;
- this.value = value;
- this.other = other;
-}
+ /** @param {...Object} args */
+ static between(args) {
+ return createP('between', parseArgs.apply(null, arguments));
+ }
-/**
- * Returns the string representation of the instance.
- * @returns {string}
- */
-P.prototype.toString = function () {
- if (this.other === undefined) {
- return this.operator + '(' + this.value + ')';
+ /** @param {...Object} args */
+ static eq(args) {
+ return createP('eq', parseArgs.apply(null, arguments));
+ }
+
+ /** @param {...Object} args */
+ static gt(args) {
+ return createP('gt', parseArgs.apply(null, arguments));
+ }
+
+ /** @param {...Object} args */
+ static gte(args) {
+ return createP('gte', parseArgs.apply(null, arguments));
+ }
+
+ /** @param {...Object} args */
+ static inside(args) {
+ return createP('inside', parseArgs.apply(null, arguments));
+ }
+
+ /** @param {...Object} args */
+ static lt(args) {
+ return createP('lt', parseArgs.apply(null, arguments));
+ }
+
+ /** @param {...Object} args */
+ static lte(args) {
+ return createP('lte', parseArgs.apply(null, arguments));
+ }
+
+ /** @param {...Object} args */
+ static neq(args) {
+ return createP('neq', parseArgs.apply(null, arguments));
}
- return this.operator + '(' + this.value + ', ' + this.other + ')';
-};
+
+ /** @param {...Object} args */
+ static not(args) {
+ return createP('not', parseArgs.apply(null, arguments));
+ }
+
+ /** @param {...Object} args */
+ static outside(args) {
+ return createP('outside', parseArgs.apply(null, arguments));
+ }
+
+ /** @param {...Object} args */
+ static test(args) {
+ return createP('test', parseArgs.apply(null, arguments));
+ }
+
+ /** @param {...Object} args */
+ static within(args) {
+ return createP('within', parseArgs.apply(null, arguments));
+ }
+
+ /** @param {...Object} args */
+ static without(args) {
+ return createP('without', parseArgs.apply(null, arguments));
+ }
+
+}
function createP(operator, args) {
args.unshift(null, operator);
return new (Function.prototype.bind.apply(P, args));
}
-/** @param {...Object} args */
-P.between = function (args) {
- return createP('between', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.eq = function (args) {
- return createP('eq', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.gt = function (args) {
- return createP('gt', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.gte = function (args) {
- return createP('gte', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.inside = function (args) {
- return createP('inside', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.lt = function (args) {
- return createP('lt', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.lte = function (args) {
- return createP('lte', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.neq = function (args) {
- return createP('neq', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.not = function (args) {
- return createP('not', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.outside = function (args) {
- return createP('outside', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.test = function (args) {
- return createP('test', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.within = function (args) {
- return createP('within', parseArgs.apply(null, arguments));
-};
-
-/** @param {...Object} args */
-P.without = function (args) {
- return createP('without', parseArgs.apply(null, arguments));
-};
-
-P.prototype.and = function (arg) {
- return new P('and', this, arg);
-};
-
-P.prototype.or = function (arg) {
- return new P('or', this, arg);
-};
-
-function Traverser(object, bulk) {
- this.object = object;
- this.bulk = bulk || 1;
+class Traverser {
+ constructor(object, bulk) {
+ this.object = object;
+ this.bulk = bulk || 1;
+ }
}
-function TraversalSideEffects() {
+class TraversalSideEffects {
}
function toEnum(typeName, keys) {
- var result = {};
- keys.split(' ').forEach(function (k) {
- var jsKey = k;
+ const result = {};
+ keys.split(' ').forEach(k => {
+ let jsKey = k;
if (jsKey === jsKey.toUpperCase()) {
jsKey = jsKey.toLowerCase();
}
@@ -230,17 +237,19 @@ function toEnum(typeName, keys) {
return result;
}
-function EnumValue(typeName, elementName) {
- this.typeName = typeName;
- this.elementName = elementName;
+class EnumValue {
+ constructor(typeName, elementName) {
+ this.typeName = typeName;
+ this.elementName = elementName;
+ }
}
module.exports = {
- EnumValue: EnumValue,
- P: P,
- Traversal: Traversal,
- TraversalSideEffects: TraversalSideEffects,
- Traverser: Traverser,
+ EnumValue,
+ P,
+ Traversal,
+ TraversalSideEffects,
+ Traverser,
barrier: toEnum('Barrier', 'normSack'),
cardinality: toEnum('Cardinality', 'list set single'),
column: toEnum('Column', 'keys values'),
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/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 cbb7e2c..2861a50 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
@@ -22,120 +22,120 @@
*/
'use strict';
-var gt = require('../process/graph-traversal');
-var TraversalStrategies = require('../process/traversal-strategy').TraversalStrategies;
-var utils = require('../utils');
-var inherits = utils.inherits;
-
-function Graph() {
+const gt = require('../process/graph-traversal');
+const TraversalStrategies = require('../process/traversal-strategy').TraversalStrategies;
+
+class Graph {
+ /**
+ * Returns the graph traversal source.
+ * @returns {GraphTraversalSource}
+ */
+ traversal() {
+ return new gt.GraphTraversalSource(this, new TraversalStrategies());
+ }
+ toString() {
+ return 'graph[empty]';
+ }
}
-/**
- * Returns the graph traversal source.
- * @returns {GraphTraversalSource}
- */
-Graph.prototype.traversal = function () {
- return new gt.GraphTraversalSource(this, new TraversalStrategies());
-};
-
-Graph.prototype.toString = function () {
- return 'graph[empty]';
-};
+class Element {
+ constructor(id, label) {
+ this.id = id;
+ this.label = label;
+ }
-function Element(id, label) {
- this.id = id;
- this.label = label;
+ /**
+ * Compares this instance to another and determines if they can be considered as equal.
+ * @param {Element} other
+ * @returns {boolean}
+ */
+ equals(other) {
+ return (other instanceof Element) && this.id === other.id;
+ }
}
-/**
- * Compares this instance to another and determines if they can be considered as equal.
- * @param {Element} other
- * @returns {boolean}
- */
-Element.prototype.equals = function (other) {
- return (other instanceof Element) && this.id === other.id;
-};
+class Vertex extends Element {
+ constructor(id, label, properties) {
+ super(id, label);
+ this.properties = properties;
+ }
-function Vertex(id, label, properties) {
- Element.call(this, id, label);
- this.properties = properties;
+ toString() {
+ return 'v[' + this.id + ']';
+ }
}
-Vertex.prototype.toString = function () {
- return 'v[' + this.id + ']';
-};
-
-inherits(Vertex, Element);
-
-function Edge(id, outV, label, inV, properties) {
- Element.call(this, id, label);
- this.outV = outV;
- this.inV = inV;
- this.properties = {};
- (function adaptProperties(self) {
+class Edge extends Element {
+ constructor(id, outV, label, inV, properties) {
+ super(id, label);
+ this.outV = outV;
+ this.inV = inV;
+ this.properties = {};
if (properties) {
- var keys = Object.keys(properties);
- for (var i = 0; i < keys.length; i++) {
- var k = keys[i];
- self.properties[k] = properties[k].value;
+ const keys = Object.keys(properties);
+ for (let i = 0; i < keys.length; i++) {
+ const k = keys[i];
+ this.properties[k] = properties[k].value;
}
}
- })(this);
-}
-
-inherits(Edge, Element);
-
-Edge.prototype.toString = function () {
- return 'e[' + this.id + '][' + this.outV.id + '-' + this.label + '->' + this.inV.id + ']';
-};
+ }
-function VertexProperty(id, label, value, properties) {
- Element.call(this, id, label);
- this.value = value;
- this.key = this.label;
- this.properties = properties;
+ toString() {
+ return 'e[' + this.id + '][' + this.outV.id + '-' + this.label + '->' + this.inV.id + ']';
+ }
}
-inherits(VertexProperty, Element);
-
-VertexProperty.prototype.toString = function () {
- return 'vp[' + this.label + '->' + this.value.substr(0, 20) + ']';
-};
+class VertexProperty extends Element {
+ constructor(id, label, value, properties) {
+ super(id, label);
+ this.value = value;
+ this.key = this.label;
+ this.properties = properties;
+ }
-function Property(key, value) {
- this.key = key;
- this.value = value;
+ toString() {
+ return 'vp[' + this.label + '->' + this.value.substr(0, 20) + ']';
+ }
}
-Property.prototype.toString = function () {
- return 'p[' + this.key + '->' + this.value.substr(0, 20) + ']';
-};
+class Property {
+ constructor(key, value) {
+ this.key = key;
+ this.value = value;
+ }
-Property.prototype.equals = function (other) {
- return (other instanceof Property) && this.key === other.key && this.value === other.value;
-};
+ toString() {
+ return 'p[' + this.key + '->' + this.value.substr(0, 20) + ']';
+ }
-/**
- * Represents a walk through a graph as defined by a traversal.
- * @param {Array} labels
- * @param {Array} objects
- * @constructor
- */
-function Path(labels, objects) {
- this.labels = labels;
- this.objects = objects;
+ equals(other) {
+ return (other instanceof Property) && this.key === other.key && this.value === other.value;
+ }
}
-Path.prototype.equals = function (other) {
- if (!(other instanceof Path)) {
- return false;
+class Path {
+ /**
+ * Represents a walk through a graph as defined by a traversal.
+ * @param {Array} labels
+ * @param {Array} objects
+ * @constructor
+ */
+ constructor(labels, objects) {
+ this.labels = labels;
+ this.objects = objects;
}
- if (other === this) {
- return true;
+
+ equals(other) {
+ if (!(other instanceof Path)) {
+ return false;
+ }
+ if (other === this) {
+ return true;
+ }
+ return areEqual(this.objects, other.objects) && areEqual(this.labels, other.labels);
}
- return areEqual(this.objects, other.objects) && areEqual(this.labels, other.labels);
-};
+}
function areEqual(obj1, obj2) {
if (obj1 === obj2) {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/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 8e4ad5e..3dbd340 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
@@ -22,430 +22,159 @@
*/
'use strict';
-var t = require('../../process/traversal');
-var Bytecode = require('../../process/bytecode');
-var g = require('../graph');
-var utils = require('../../utils');
-
-/**
- * A type serializer
- * @typedef {Object} Serializer
- * @property {Function} serialize
- * @property {Function} deserialize
- * @property {Function} [canBeUsedFor]
- */
-
-/**
- * @const
- * @private
- */
-var valueKey = '@value';
-
-/**
- * @const
- * @private
- */
-var typeKey = '@type';
-
-var deserializers = {
- 'g:Traverser': TraverserSerializer,
- 'g:Int32': NumberSerializer,
- 'g:Int64': NumberSerializer,
- 'g:Float': NumberSerializer,
- 'g:Double': NumberSerializer,
- 'g:Vertex': VertexSerializer,
- 'g:Edge': EdgeSerializer,
- 'g:VertexProperty': VertexPropertySerializer,
- 'g:Property': PropertySerializer,
- 'g:Path': PathSerializer
-};
-
-var serializers = [
- NumberSerializer,
- BytecodeSerializer,
- TraverserSerializer,
- PSerializer,
- LambdaSerializer,
- EnumSerializer,
- VertexSerializer,
- EdgeSerializer,
- LongSerializer
-];
+const typeSerializers = require('./type-serializers');
/**
* GraphSON Writer
- * @param {Object} [options]
- * @param {Object} options.serializers An object used as an associative array with GraphSON 2 type name as keys and
- * serializer instances as values, ie: { 'g:Int64': longSerializer }.
- * @constructor
- */
-function GraphSONWriter(options) {
- this._options = options || {};
- // Create instance of the default serializers
- this._serializers = serializers.map(function (serializerConstructor) {
- var s = new serializerConstructor();
- s.writer = this;
- return s;
- }, this);
- var customSerializers = this._options.serializers || {};
- Object.keys(customSerializers).forEach(function (key) {
- var s = customSerializers[key];
- if (!s.serialize) {
- return;
- }
- s.writer = this;
- // Insert custom serializers first
- this._serializers.unshift(s);
- }, this);
-}
-
-GraphSONWriter.prototype.adaptObject = function (value) {
- var s;
- if (Array.isArray(value)) {
- return value.map(function (item) {
- return this.adaptObject(item);
- }, this);
- }
- for (var i = 0; i < this._serializers.length; i++) {
- var currentSerializer = this._serializers[i];
- if (currentSerializer.canBeUsedFor && currentSerializer.canBeUsedFor(value)) {
- s = currentSerializer;
- break;
- }
- }
- if (s) {
- return s.serialize(value);
- }
- // Default (strings / objects / ...)
- return value;
-};
-
-/**
- * Returns the GraphSON representation of the provided object instance.
- * @param {Object} obj
- * @returns {String}
*/
-GraphSONWriter.prototype.write = function (obj) {
- return JSON.stringify(this.adaptObject(obj));
-};
-
-/**
- * GraphSON Reader
- * @param {Object} [options]
- * @param {Object} [options.serializers] An object used as an associative array with GraphSON 2 type name as keys and
- * deserializer instances as values, ie: { 'g:Int64': longSerializer }.
- * @constructor
- */
-function GraphSONReader(options) {
- this._options = options || {};
- this._deserializers = {};
- Object.keys(deserializers).forEach(function (typeName) {
- var serializerConstructor = deserializers[typeName];
- var s = new serializerConstructor();
- s.reader = this;
- this._deserializers[typeName] = s;
- }, this);
- if (this._options.serializers) {
- var customSerializers = this._options.serializers || {};
- Object.keys(customSerializers).forEach(function (key) {
- var s = customSerializers[key];
- if (!s.deserialize) {
+class GraphSONWriter {
+ /**
+ * @param {Object} [options]
+ * @param {Object} options.serializers An object used as an associative array with GraphSON 2 type name as keys and
+ * serializer instances as values, ie: { 'g:Int64': longSerializer }.
+ * @constructor
+ */
+ constructor(options) {
+ this._options = options || {};
+ // Create instance of the default serializers
+ this._serializers = serializers.map(serializerConstructor => {
+ const s = new serializerConstructor();
+ s.writer = this;
+ return s;
+ });
+ const customSerializers = this._options.serializers || {};
+ Object.keys(customSerializers).forEach(key => {
+ const s = customSerializers[key];
+ if (!s.serialize) {
return;
}
- s.reader = this;
- this._deserializers[key] = s;
- }, this);
+ s.writer = this;
+ // Insert custom serializers first
+ this._serializers.unshift(s);
+ });
}
-}
-GraphSONReader.prototype.read = function (obj) {
- if (obj === undefined) {
- return undefined;
- }
- if (obj === null) {
- return null;
- }
- if (Array.isArray(obj)) {
- return obj.map(function mapEach(item) {
- return this.read(item);
- }, this);
- }
- var type = obj[typeKey];
- if (type) {
- var d = this._deserializers[type];
- if (d) {
- // Use type serializer
- return d.deserialize(obj);
+ adaptObject(value) {
+ let s;
+ if (Array.isArray(value)) {
+ return value.map(item => this.adaptObject(item));
}
- return obj[valueKey];
- }
- if (obj && typeof obj === 'object' && obj.constructor === Object) {
- return this._deserializeObject(obj);
+ for (let i = 0; i < this._serializers.length; i++) {
+ const currentSerializer = this._serializers[i];
+ if (currentSerializer.canBeUsedFor && currentSerializer.canBeUsedFor(value)) {
+ s = currentSerializer;
+ break;
+ }
+ }
+ if (s) {
+ return s.serialize(value);
+ }
+ // Default (strings / objects / ...)
+ return value;
}
- // Default (for boolean, number and other scalars)
- return obj;
-};
-GraphSONReader.prototype._deserializeObject = function (obj) {
- var keys = Object.keys(obj);
- var result = {};
- for (var i = 0; i < keys.length; i++) {
- result[keys[i]] = this.read(obj[keys[i]]);
+ /**
+ * Returns the GraphSON representation of the provided object instance.
+ * @param {Object} obj
+ * @returns {String}
+ */
+ write(obj) {
+ return JSON.stringify(this.adaptObject(obj));
}
- return result;
-};
-
-function NumberSerializer() {
-
-}
-
-NumberSerializer.prototype.serialize = function (item) {
- return item;
-};
-
-NumberSerializer.prototype.deserialize = function (obj) {
- var value = obj[valueKey];
- return parseFloat(value);
-};
-
-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() {
-
}
-BytecodeSerializer.prototype.serialize = function (item) {
- var bytecode = item;
- if (item instanceof t.Traversal) {
- bytecode = item.getBytecode();
- }
- var result = {};
- result[typeKey] = 'g:Bytecode';
- var resultValue = result[valueKey] = {};
- var sources = this._serializeInstructions(bytecode.sourceInstructions);
- if (sources) {
- resultValue['source'] = sources;
- }
- var steps = this._serializeInstructions(bytecode.stepInstructions);
- if (steps) {
- resultValue['step'] = steps;
+class GraphSONReader {
+ /**
+ * GraphSON Reader
+ * @param {Object} [options]
+ * @param {Object} [options.serializers] An object used as an associative array with GraphSON 2 type name as keys and
+ * deserializer instances as values, ie: { 'g:Int64': longSerializer }.
+ * @constructor
+ */
+ constructor(options) {
+ this._options = options || {};
+ this._deserializers = {};
+ Object.keys(deserializers).forEach(typeName => {
+ const serializerConstructor = deserializers[typeName];
+ const s = new serializerConstructor();
+ s.reader = this;
+ this._deserializers[typeName] = s;
+ });
+ if (this._options.serializers) {
+ const customSerializers = this._options.serializers || {};
+ Object.keys(customSerializers).forEach(key => {
+ const s = customSerializers[key];
+ if (!s.deserialize) {
+ return;
+ }
+ s.reader = this;
+ this._deserializers[key] = s;
+ });
+ }
}
- return result;
-};
-BytecodeSerializer.prototype._serializeInstructions = function (instructions) {
- if (instructions.length === 0) {
- return null;
- }
- var result = new Array(instructions.length);
- result[0] = instructions[0];
- for (var i = 0; i < instructions.length; i++) {
- result[i] = this.writer.adaptObject(instructions[i]);
+ read(obj) {
+ if (obj === undefined) {
+ return undefined;
+ }
+ if (obj === null) {
+ return null;
+ }
+ if (Array.isArray(obj)) {
+ return obj.map(item => this.read(item));
+ }
+ const type = obj[typeSerializers.typeKey];
+ if (type) {
+ const d = this._deserializers[type];
+ if (d) {
+ // Use type serializer
+ return d.deserialize(obj);
+ }
+ return obj[typeSerializers.valueKey];
+ }
+ if (obj && typeof obj === 'object' && obj.constructor === Object) {
+ return this._deserializeObject(obj);
+ }
+ // Default (for boolean, number and other scalars)
+ return obj;
}
- return result;
-};
-
-BytecodeSerializer.prototype.canBeUsedFor = function (value) {
- return (value instanceof Bytecode) || (value instanceof t.Traversal);
-};
-
-function PSerializer() {
-}
-
-/** @param {P} item */
-PSerializer.prototype.serialize = function (item) {
- var result = {};
- result[typeKey] = 'g:P';
- var resultValue = result[valueKey] = {
- 'predicate': item.operator
- };
- if (item.other === undefined || item.other === null) {
- resultValue['value'] = this.writer.adaptObject(item.value);
- }
- else {
- resultValue['value'] = [ this.writer.adaptObject(item.value), this.writer.adaptObject(item.other) ];
+ _deserializeObject(obj) {
+ const keys = Object.keys(obj);
+ const result = {};
+ for (let i = 0; i < keys.length; i++) {
+ result[keys[i]] = this.read(obj[keys[i]]);
+ }
+ return result;
}
- return result;
-};
-
-PSerializer.prototype.canBeUsedFor = function (value) {
- return (value instanceof t.P);
-};
-
-function LambdaSerializer() {
-
-}
-
-/** @param {Function} item */
-LambdaSerializer.prototype.serialize = function (item) {
- var result = {};
- result[typeKey] = 'g:Lambda';
- result[valueKey] = {
- 'arguments': item.length,
- 'language': 'gremlin-javascript',
- 'script': item.toString()
- };
- return result;
-};
-
-LambdaSerializer.prototype.canBeUsedFor = function (value) {
- return (typeof value === 'function');
-};
-
-function EnumSerializer() {
-
}
-/** @param {EnumValue} item */
-EnumSerializer.prototype.serialize = function (item) {
- var result = {};
- result[typeKey] = 'g:' + item.typeName;
- result[valueKey] = item.elementName;
- return result;
-};
-
-EnumSerializer.prototype.canBeUsedFor = function (value) {
- return value && value.typeName && value instanceof t.EnumValue;
-};
-
-function TraverserSerializer() {
-
-}
-
-/** @param {Traverser} item */
-TraverserSerializer.prototype.serialize = function (item) {
- var result = {};
- result[typeKey] = 'g:Traverser';
- result[valueKey] = {
- 'value': this.writer.adaptObject(item.object),
- 'bulk': this.writer.adaptObject(item.bulk)
- };
- return result;
-};
-
-TraverserSerializer.prototype.deserialize = function (obj) {
- var value = obj[valueKey];
- return new t.Traverser(this.reader.read(value['value']), this.reader.read(value['bulk']));
-};
-
-TraverserSerializer.prototype.canBeUsedFor = function (value) {
- return (value instanceof t.Traverser);
-};
-
-function VertexSerializer() {
-
-}
-
-VertexSerializer.prototype.deserialize = function (obj) {
- var value = obj[valueKey];
- return new g.Vertex(this.reader.read(value['id']), value['label'], this.reader.read(value['properties']));
-};
-
-/** @param {Vertex} item */
-VertexSerializer.prototype.serialize = function (item) {
- var result = {};
- result[typeKey] = 'g:Vertex';
- result[valueKey] = {
- 'id': this.writer.adaptObject(item.id),
- 'label': item.label
- };
- return result;
-};
-
-VertexSerializer.prototype.canBeUsedFor = function (value) {
- return (value instanceof g.Vertex);
-};
-
-function VertexPropertySerializer() {
-
-}
-
-VertexPropertySerializer.prototype.deserialize = function (obj) {
- var value = obj[valueKey];
- return new g.VertexProperty(
- this.reader.read(value['id']),
- value['label'],
- this.reader.read(value['value']),
- this.reader.read(value['properties'])
- );
-};
-
-function PropertySerializer() {
-
-}
-
-PropertySerializer.prototype.deserialize = function (obj) {
- var value = obj[valueKey];
- return new g.Property(
- value['key'],
- this.reader.read(value['value']));
-};
-
-function EdgeSerializer() {
-
-}
-
-EdgeSerializer.prototype.deserialize = function (obj) {
- var value = obj[valueKey];
- return new g.Edge(
- this.reader.read(value['id']),
- this.reader.read(value['outV']),
- value['label'],
- this.reader.read(value['inV']),
- this.reader.read(value['properties'])
- );
-};
-
-/** @param {Edge} item */
-EdgeSerializer.prototype.serialize = function (item) {
- var result = {};
- result[typeKey] = 'g:Edge';
- result[valueKey] = {
- 'id': this.writer.adaptObject(item.id),
- 'label': item.label,
- 'outV': this.writer.adaptObject(item.outV.id),
- 'outVLabel': item.outV.label,
- 'inV': this.writer.adaptObject(item.inV.id),
- 'inVLabel': item.inV.label
- };
- return result;
-};
-
-EdgeSerializer.prototype.canBeUsedFor = function (value) {
- return (value instanceof g.Edge);
-};
-
-function PathSerializer() {
-
-}
-
-PathSerializer.prototype.deserialize = function (obj) {
- var value = obj[valueKey];
- var objects = value['objects'].map(function objectMapItem(o) {
- return this.reader.read(o);
- }, this);
- return new g.Path(this.reader.read(value['labels']), objects);
-};
+const deserializers = {
+ 'g:Traverser': typeSerializers.TraverserSerializer,
+ 'g:Int32': typeSerializers.NumberSerializer,
+ 'g:Int64': typeSerializers.NumberSerializer,
+ 'g:Float': typeSerializers.NumberSerializer,
+ 'g:Double': typeSerializers.NumberSerializer,
+ 'g:Vertex': typeSerializers.VertexSerializer,
+ 'g:Edge': typeSerializers.EdgeSerializer,
+ 'g:VertexProperty': typeSerializers.VertexPropertySerializer,
+ 'g:Property': typeSerializers.PropertySerializer,
+ 'g:Path': typeSerializers.PathSerializer
+};
+
+const serializers = [
+ typeSerializers.NumberSerializer,
+ typeSerializers.BytecodeSerializer,
+ typeSerializers.TraverserSerializer,
+ typeSerializers.PSerializer,
+ typeSerializers.LambdaSerializer,
+ typeSerializers.EnumSerializer,
+ typeSerializers.VertexSerializer,
+ typeSerializers.EdgeSerializer,
+ typeSerializers.LongSerializer
+];
module.exports = {
- GraphSONWriter: GraphSONWriter,
- GraphSONReader: GraphSONReader
+ GraphSONWriter,
+ GraphSONReader
};
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js
new file mode 100644
index 0000000..d6f131c
--- /dev/null
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js
@@ -0,0 +1,288 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * @author Jorge Bay Gondra
+ */
+'use strict';
+
+const t = require('../../process/traversal');
+const Bytecode = require('../../process/bytecode');
+const g = require('../graph');
+const utils = require('../../utils');
+
+const valueKey = '@value';
+const typeKey = '@type';
+
+/**
+ * @abstract
+ */
+class TypeSerializer {
+ serialize() {
+ throw new Error('serialize() method not implemented for ' + this.constructor.name);
+ }
+
+ deserialize() {
+ throw new Error('deserialize() method not implemented for ' + this.constructor.name);
+ }
+
+ canBeUsedFor() {
+ throw new Error('canBeUsedFor() method not implemented for ' + this.constructor.name);
+ }
+}
+
+class NumberSerializer extends TypeSerializer {
+ serialize(item) {
+ return item;
+ }
+
+ deserialize(obj) {
+ return parseFloat(obj[valueKey]);
+ }
+
+ canBeUsedFor(value) {
+ return (typeof value === 'number');
+ }
+}
+
+class LongSerializer extends TypeSerializer {
+ serialize(item) {
+ return {
+ [typeKey]: 'g:Int64',
+ [valueKey]: item.value
+ };
+ }
+
+ canBeUsedFor(value) {
+ return (value instanceof utils.Long);
+ }
+}
+
+class BytecodeSerializer extends TypeSerializer {
+ serialize(item) {
+ let bytecode = item;
+ if (item instanceof t.Traversal) {
+ bytecode = item.getBytecode();
+ }
+ const result = {};
+ result[typeKey] = 'g:Bytecode';
+ const resultValue = result[valueKey] = {};
+ const sources = this._serializeInstructions(bytecode.sourceInstructions);
+ if (sources) {
+ resultValue['source'] = sources;
+ }
+ const steps = this._serializeInstructions(bytecode.stepInstructions);
+ if (steps) {
+ resultValue['step'] = steps;
+ }
+ return result;
+ }
+
+ _serializeInstructions(instructions) {
+ if (instructions.length === 0) {
+ return null;
+ }
+ const result = new Array(instructions.length);
+ result[0] = instructions[0];
+ for (let i = 0; i < instructions.length; i++) {
+ result[i] = this.writer.adaptObject(instructions[i]);
+ }
+ return result;
+ }
+
+ canBeUsedFor(value) {
+ return (value instanceof Bytecode) || (value instanceof t.Traversal);
+ }
+}
+
+class PSerializer extends TypeSerializer {
+ /** @param {P} item */
+ serialize(item) {
+ const result = {};
+ result[typeKey] = 'g:P';
+ const resultValue = result[valueKey] = {
+ 'predicate': item.operator
+ };
+ if (item.other === undefined || item.other === null) {
+ resultValue['value'] = this.writer.adaptObject(item.value);
+ }
+ else {
+ resultValue['value'] = [ this.writer.adaptObject(item.value), this.writer.adaptObject(item.other) ];
+ }
+ return result;
+ }
+
+ canBeUsedFor(value) {
+ return (value instanceof t.P);
+ }
+}
+
+class LambdaSerializer extends TypeSerializer {
+ /** @param {Function} item */
+ serialize(item) {
+ return {
+ [typeKey]: 'g:Lambda',
+ [valueKey]: {
+ 'arguments': item.length,
+ 'language': 'gremlin-javascript',
+ 'script': item.toString()
+ }
+ };
+ }
+
+ canBeUsedFor(value) {
+ return (typeof value === 'function');
+ }
+}
+
+class EnumSerializer extends TypeSerializer {
+ /** @param {EnumValue} item */
+ serialize(item) {
+ return {
+ [typeKey]: 'g:' + item.typeName,
+ [valueKey]: item.elementName
+ };
+ }
+
+ canBeUsedFor(value) {
+ return value && value.typeName && value instanceof t.EnumValue;
+ }
+}
+
+class TraverserSerializer extends TypeSerializer {
+ /** @param {Traverser} item */
+ serialize(item) {
+ return {
+ [typeKey]: 'g:Traverser',
+ [valueKey]: {
+ 'value': this.writer.adaptObject(item.object),
+ 'bulk': this.writer.adaptObject(item.bulk)
+ }
+ };
+ }
+
+ deserialize(obj) {
+ const value = obj[valueKey];
+ return new t.Traverser(this.reader.read(value['value']), this.reader.read(value['bulk']));
+ }
+
+ canBeUsedFor(value) {
+ return (value instanceof t.Traverser);
+ }
+}
+
+class VertexSerializer extends TypeSerializer {
+ deserialize(obj) {
+ const value = obj[valueKey];
+ return new g.Vertex(this.reader.read(value['id']), value['label'], this.reader.read(value['properties']));
+ }
+
+ /** @param {Vertex} item */
+ serialize(item) {
+ return {
+ [typeKey]: 'g:Vertex',
+ [valueKey]: {
+ 'id': this.writer.adaptObject(item.id),
+ 'label': item.label
+ }
+ };
+ }
+
+ canBeUsedFor(value) {
+ return (value instanceof g.Vertex);
+ }
+}
+
+class VertexPropertySerializer extends TypeSerializer {
+ deserialize(obj) {
+ const value = obj[valueKey];
+ return new g.VertexProperty(
+ this.reader.read(value['id']),
+ value['label'],
+ this.reader.read(value['value']),
+ this.reader.read(value['properties'])
+ );
+ }
+}
+
+class PropertySerializer extends TypeSerializer {
+ deserialize(obj) {
+ const value = obj[valueKey];
+ return new g.Property(
+ value['key'],
+ this.reader.read(value['value']));
+ }
+}
+
+class EdgeSerializer extends TypeSerializer {
+ deserialize(obj) {
+ const value = obj[valueKey];
+ return new g.Edge(
+ this.reader.read(value['id']),
+ this.reader.read(value['outV']),
+ value['label'],
+ this.reader.read(value['inV']),
+ this.reader.read(value['properties'])
+ );
+ }
+
+ /** @param {Edge} item */
+ serialize(item) {
+ return {
+ [typeKey]: 'g:Edge',
+ [valueKey]: {
+ 'id': this.writer.adaptObject(item.id),
+ 'label': item.label,
+ 'outV': this.writer.adaptObject(item.outV.id),
+ 'outVLabel': item.outV.label,
+ 'inV': this.writer.adaptObject(item.inV.id),
+ 'inVLabel': item.inV.label
+ }
+ };
+ }
+
+ canBeUsedFor(value) {
+ return (value instanceof g.Edge);
+ }
+}
+
+class PathSerializer extends TypeSerializer {
+ deserialize(obj) {
+ const value = obj[valueKey];
+ const objects = value['objects'].map(o => this.reader.read(o));
+ return new g.Path(this.reader.read(value['labels']), objects);
+ }
+}
+
+module.exports = {
+ BytecodeSerializer,
+ EdgeSerializer,
+ EnumSerializer,
+ LambdaSerializer,
+ LongSerializer,
+ NumberSerializer,
+ PathSerializer,
+ PropertySerializer,
+ PSerializer,
+ TraverserSerializer,
+ typeKey,
+ valueKey,
+ VertexPropertySerializer,
+ VertexSerializer
+};
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/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 cbaa53e..bf87368 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/utils.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/utils.js
@@ -22,9 +22,6 @@
* @author Jorge Bay Gondra
*/
'use strict';
-var util = require('util');
-
-exports.inherits = util.inherits;
exports.parseArgs = function parseArgs() {
return (arguments.length === 1 ? [ arguments[0] ] : Array.apply(null, arguments));
@@ -56,7 +53,7 @@ exports.resolvedPromise = function (promiseFactory) {
});
};
-var toPromise = exports.toPromise = function toPromise(promiseFactory, handler) {
+const toPromise = exports.toPromise = function toPromise(promiseFactory, handler) {
promiseFactory = promiseFactory || defaultPromiseFactory;
return promiseFactory(handler);
};
@@ -65,7 +62,7 @@ exports.toLong = function toLong(value) {
return new Long(value);
};
-var Long = exports.Long = function Long(value) {
+const Long = exports.Long = function Long(value) {
if (typeof value !== 'string' && typeof value !== 'number') {
throw new TypeError('Ty')
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/remote-connection-tests.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/remote-connection-tests.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/remote-connection-tests.js
index e4895fe..9e115be 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/remote-connection-tests.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/remote-connection-tests.js
@@ -27,7 +27,7 @@ const Bytecode = require('../../lib/process/bytecode');
const graphModule = require('../../lib/structure/graph');
const helper = require('../helper');
-var connection;
+let connection;
describe('DriverRemoteConnection', function () {
before(function () {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
index 7109427..01dde62 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
@@ -29,7 +29,7 @@ const Vertex = graphModule.Vertex;
const utils = require('../../lib/utils');
const helper = require('../helper');
-var connection;
+let connection;
describe('Traversal', function () {
before(function () {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/exports-test.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/exports-test.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/exports-test.js
index 3864a4a..53b6577 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/exports-test.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/exports-test.js
@@ -22,8 +22,8 @@
*/
'use strict';
-var assert = require('assert');
-var glvModule = require('../../');
+const assert = require('assert');
+const glvModule = require('../../');
describe('API', function () {
it('should export fields under process', function () {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphson-test.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphson-test.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphson-test.js
index ed5beb3..8bc7571 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphson-test.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphson-test.js
@@ -22,23 +22,23 @@
*/
'use strict';
-var assert = require('assert');
-var graph = require('../../lib/structure/graph');
-var t = require('../../lib/process/traversal.js');
-var gs = require('../../lib/structure/io/graph-serializer.js');
-var GraphSONReader = gs.GraphSONReader;
-var GraphSONWriter = gs.GraphSONWriter;
-var P = t.P;
+const assert = require('assert');
+const graph = require('../../lib/structure/graph');
+const t = require('../../lib/process/traversal.js');
+const gs = require('../../lib/structure/io/graph-serializer.js');
+const GraphSONReader = gs.GraphSONReader;
+const GraphSONWriter = gs.GraphSONWriter;
+const P = t.P;
describe('GraphSONReader', function () {
it('should parse GraphSON int32, float and double to Number from GraphSON', function () {
- var reader = new GraphSONReader();
+ const reader = new GraphSONReader();
[
[ 'g:Int32', 31 ],
[ 'g:Float', 31.3],
[ 'g:Double', 31.2]
].forEach(function (item) {
- var result = reader.read({
+ const result = reader.read({
"@type": item[0],
"@value": item[1]
});
@@ -47,12 +47,12 @@ describe('GraphSONReader', function () {
});
});
it('should parse vertices from GraphSON', function () {
- var obj = {
+ const obj = {
"@type":"g:Vertex", "@value":{"id":{"@type":"g:Int32","@value":1},"label":"person",
"properties":{"name":[{"id":{"@type":"g:Int64","@value":0},"value":"marko"}],
"age":[{"id":{"@type":"g:Int64","@value":1},"value":{"@type":"g:Int32","@value":29}}]}}};
- var reader = new GraphSONReader(obj);
- var result = reader.read(obj);
+ const reader = new GraphSONReader(obj);
+ const result = reader.read(obj);
assert.ok(result instanceof graph.Vertex);
assert.strictEqual(result.label, 'person');
assert.strictEqual(typeof result.id, 'number');
@@ -65,7 +65,7 @@ describe('GraphSONReader', function () {
assert.strictEqual(result.properties['age'][0].value, 29);
});
it('should parse paths from GraphSON', function () {
- var obj = {"@type":"g:Path","@value":{"labels":[["a"],["b","c"],[]],"objects":[
+ const obj = {"@type":"g:Path","@value":{"labels":[["a"],["b","c"],[]],"objects":[
{
"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":1},"label":"person",
"properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":0},
@@ -79,8 +79,8 @@ describe('GraphSONReader', function () {
"lang":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":5},
"value":"java","label":"lang"}}]}}},
"lop"]}};
- var reader = new GraphSONReader(obj);
- var result = reader.read(obj);
+ const reader = new GraphSONReader(obj);
+ const result = reader.read(obj);
assert.ok(result);
assert.ok(result.objects);
assert.ok(result.labels);
@@ -93,17 +93,17 @@ describe('GraphSONReader', function () {
});
describe('GraphSONWriter', function () {
it('should write numbers', function () {
- var writer = new GraphSONWriter();
+ const writer = new GraphSONWriter();
assert.strictEqual(writer.write(2), '2');
});
it('should write boolean values', function () {
- var writer = new GraphSONWriter();
+ const writer = new GraphSONWriter();
assert.strictEqual(writer.write(true), 'true');
assert.strictEqual(writer.write(false), 'false');
});
it('should write P', function () {
- var writer = new GraphSONWriter();
- var expected = JSON.stringify({"@type":"g:P","@value":{"predicate":"and","value":[
+ const writer = new GraphSONWriter();
+ const expected = JSON.stringify({"@type":"g:P","@value":{"predicate":"and","value":[
{"@type":"g:P","@value":{"predicate":"or","value":[{"@type":"g:P","@value":{"predicate":"lt","value":"b"}},
{"@type":"g:P","@value":{"predicate":"gt","value":"c"}}]}},
{"@type":"g:P","@value":{"predicate":"neq","value":"d"}}]}});
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js
index 2be504b..9310143 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js
@@ -33,8 +33,8 @@ describe('Traversal', function () {
describe('#getByteCode()', function () {
it('should add steps for with a string parameter', function () {
- var g = new graph.Graph().traversal();
- var bytecode = g.V().out('created').getBytecode();
+ const g = new graph.Graph().traversal();
+ const bytecode = g.V().out('created').getBytecode();
assert.ok(bytecode);
assert.strictEqual(bytecode.sourceInstructions.length, 0);
assert.strictEqual(bytecode.stepInstructions.length, 2);
@@ -44,8 +44,8 @@ describe('Traversal', function () {
});
it('should add steps with an enum value', function () {
- var g = new graph.Graph().traversal();
- var bytecode = g.V().order().by('age', t.order.decr).getBytecode();
+ const g = new graph.Graph().traversal();
+ const bytecode = g.V().order().by('age', t.order.decr).getBytecode();
assert.ok(bytecode);
assert.strictEqual(bytecode.sourceInstructions.length, 0);
assert.strictEqual(bytecode.stepInstructions.length, 3);
@@ -61,15 +61,15 @@ describe('Traversal', function () {
describe('#next()', function () {
it('should apply the strategies and return a Promise with the iterator item', function () {
- var strategyMock = {
+ const strategyMock = {
apply: function (traversal) {
traversal.traversers = [ new t.Traverser(1, 1), new t.Traverser(2, 1) ];
return utils.resolvedPromise();
}
};
- var strategies = new TraversalStrategies();
+ const strategies = new TraversalStrategies();
strategies.addStrategy(strategyMock);
- var traversal = new t.Traversal(null, strategies, null);
+ const traversal = new t.Traversal(null, strategies, null);
return traversal.next()
.then(function (item) {
assert.strictEqual(item.value, 1);
@@ -125,15 +125,15 @@ describe('Traversal', function () {
describe('#toList()', function () {
it('should apply the strategies and return a Promise with an array', function () {
- var strategyMock = {
+ const strategyMock = {
apply: function (traversal) {
traversal.traversers = [ new t.Traverser('a', 1), new t.Traverser('b', 1) ];
return utils.resolvedPromise();
}
};
- var strategies = new TraversalStrategies();
+ const strategies = new TraversalStrategies();
strategies.addStrategy(strategyMock);
- var traversal = new t.Traversal(null, strategies, null);
+ const traversal = new t.Traversal(null, strategies, null);
return traversal.toList().then(function (list) {
assert.ok(list);
assert.deepEqual(list, [ 'a', 'b' ]);
@@ -141,15 +141,15 @@ describe('Traversal', function () {
});
it('should return an empty array when traversers is empty', function () {
- var strategyMock = {
+ const strategyMock = {
apply: function (traversal) {
traversal.traversers = [];
return utils.resolvedPromise();
}
};
- var strategies = new TraversalStrategies();
+ const strategies = new TraversalStrategies();
strategies.addStrategy(strategyMock);
- var traversal = new t.Traversal(null, strategies, null);
+ const traversal = new t.Traversal(null, strategies, null);
return traversal.toList().then(function (list) {
assert.ok(Array.isArray(list));
assert.strictEqual(list.length, 0);