Improved handling of gremlin tokens in javascript CTR
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/05988461 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/05988461 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/05988461 Branch: refs/heads/master Commit: 05988461773662be765e6b7d256918e6edc0b71d Parents: c0a35e2 Author: Stephen Mallette <[email protected]> Authored: Fri Aug 31 13:43:37 2018 -0400 Committer: Stephen Mallette <[email protected]> Committed: Fri Aug 31 13:43:37 2018 -0400 ---------------------------------------------------------------------- gremlin-javascript/glv/TraversalSource.template | 13 +-- gremlin-javascript/glv/generate.groovy | 14 ++- .../gremlin-javascript/lib/process/traversal.js | 105 +++++++++++++++---- 3 files changed, 105 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/05988461/gremlin-javascript/glv/TraversalSource.template ---------------------------------------------------------------------- diff --git a/gremlin-javascript/glv/TraversalSource.template b/gremlin-javascript/glv/TraversalSource.template index 321956c..ffe0fbc 100644 --- a/gremlin-javascript/glv/TraversalSource.template +++ b/gremlin-javascript/glv/TraversalSource.template @@ -111,13 +111,14 @@ class Traversal { }; } -class IO { -<% io.each {k,v -> %> - static get <%= k %>() { - return "<%= v %>" - } +<% tokens.each { k,v -> %> +class <%= k %> { +<% v.each {a,b -> %> + static get <%= a %>() { + return "<%= b %>" + } +<% } %>} <% } %> -} class P { /** http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/05988461/gremlin-javascript/glv/generate.groovy ---------------------------------------------------------------------- diff --git a/gremlin-javascript/glv/generate.groovy b/gremlin-javascript/glv/generate.groovy index a339689..aab55d4 100644 --- a/gremlin-javascript/glv/generate.groovy +++ b/gremlin-javascript/glv/generate.groovy @@ -20,6 +20,10 @@ import groovy.text.GStringTemplateEngine import org.apache.tinkerpop.gremlin.jsr223.CoreImports +import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ConnectedComponent +import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRank +import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressure +import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ShortestPath import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource @@ -50,6 +54,12 @@ def determineVersion = { return mavenVersion.replace("-SNAPSHOT", "-alpha1") } +def gatherTokensFrom = { tokenClasses -> + def m = [:] + tokenClasses.each { tc -> m << [(tc.simpleName) : tc.getFields().sort{ a, b -> a.name <=> b.name }.collectEntries{ f -> [(f.name) : f.get(null)]}]} + return m +} + def binding = ["enums": CoreImports.getClassImports() .findAll { Enum.class.isAssignableFrom(it) } .sort { a, b -> a.getSimpleName() <=> b.getSimpleName() }, @@ -89,9 +99,7 @@ def binding = ["enums": CoreImports.getClassImports() collect { it.name }. unique(). sort { a, b -> a <=> b }, - "io": IO.class.getFields(). - sort{ a, b -> a.name <=> b.name }. - collectEntries{ f -> [(f.name) : f.get(null)]}, + "tokens": gatherTokensFrom([IO, ConnectedComponent, ShortestPath, PageRank, PeerPressure]), "toJs": toJs, "version": determineVersion(), "decapitalize": decapitalize] http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/05988461/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 09aec91..2b9ba26 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 @@ -111,34 +111,103 @@ class Traversal { }; } + class IO { - static get graphml() { - return "graphml" - } + static get graphml() { + return "graphml" + } - static get graphson() { - return "graphson" - } + static get graphson() { + return "graphson" + } - static get gryo() { - return "gryo" - } + static get gryo() { + return "gryo" + } - static get reader() { - return "~tinkerpop.io.reader" - } + static get reader() { + return "~tinkerpop.io.reader" + } - static get registry() { - return "~tinkerpop.io.registry" - } + static get registry() { + return "~tinkerpop.io.registry" + } - static get writer() { - return "~tinkerpop.io.writer" - } + static get writer() { + return "~tinkerpop.io.writer" + } +} +class ConnectedComponent { + + static get component() { + return "gremlin.connectedComponentVertexProgram.component" + } + + static get edges() { + return "~tinkerpop.connectedComponent.edges" + } + + static get propertyName() { + return "~tinkerpop.connectedComponent.propertyName" + } } +class ShortestPath { + + static get distance() { + return "~tinkerpop.shortestPath.distance" + } + + static get edges() { + return "~tinkerpop.shortestPath.edges" + } + + static get includeEdges() { + return "~tinkerpop.shortestPath.includeEdges" + } + + static get maxDistance() { + return "~tinkerpop.shortestPath.maxDistance" + } + + static get target() { + return "~tinkerpop.shortestPath.target" + } +} + +class PageRank { + + static get edges() { + return "~tinkerpop.pageRank.edges" + } + + static get propertyName() { + return "~tinkerpop.pageRank.propertyName" + } + + static get times() { + return "~tinkerpop.pageRank.times" + } +} + +class PeerPressure { + + static get edges() { + return "~tinkerpop.peerPressure.edges" + } + + static get propertyName() { + return "~tinkerpop.peerPressure.propertyName" + } + + static get times() { + return "~tinkerpop.peerPressure.times" + } +} + + class P { /** * Represents an operation.
