Manybubbles has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/183307

Change subject: WIP: Simple DSL example
......................................................................

WIP: Simple DSL example

Not a real DSL but follow the example of how to build one.  You can test it:

./console.sh
g = TinkerGraph.open()
g.of(WikidataTraversal.class)
g.cowSays()

Change-Id: Ie79d93aeae67a060108603dd8e2394a1e7262cc6
---
M src/main/groovy/org/wikidata/gremlin/GremlinPlugin.groovy
A src/main/java/org/wikidata/gremlin/WikidataTraversal.java
2 files changed, 36 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikidata/gremlin 
refs/changes/07/183307/1

diff --git a/src/main/groovy/org/wikidata/gremlin/GremlinPlugin.groovy 
b/src/main/groovy/org/wikidata/gremlin/GremlinPlugin.groovy
index e69fc1d..58b0af1 100644
--- a/src/main/groovy/org/wikidata/gremlin/GremlinPlugin.groovy
+++ b/src/main/groovy/org/wikidata/gremlin/GremlinPlugin.groovy
@@ -11,11 +11,11 @@
 class GremlinPlugin extends AbstractGremlinPlugin {
   @Override
   public String getName() {
-    return "wikidata";
+    return "wikidata"
   }
 
   @Override
   public void afterPluginTo(PluginAcceptor pluginAcceptor) throws 
IllegalEnvironmentException, PluginInitializationException {
-    pluginAcceptor.addImports(["import org.wikidata.gremlin.*"] as Set);
+    pluginAcceptor.addImports(["import org.wikidata.gremlin.*"] as Set)
   }
 }
diff --git a/src/main/java/org/wikidata/gremlin/WikidataTraversal.java 
b/src/main/java/org/wikidata/gremlin/WikidataTraversal.java
new file mode 100644
index 0000000..e42bcf3
--- /dev/null
+++ b/src/main/java/org/wikidata/gremlin/WikidataTraversal.java
@@ -0,0 +1,34 @@
+package org.wikidata.gremlin;
+
+import com.tinkerpop.gremlin.process.Traversal;
+import com.tinkerpop.gremlin.process.TraversalStrategies;
+import com.tinkerpop.gremlin.process.graph.strategy.TraverserSourceStrategy;
+import com.tinkerpop.gremlin.process.util.DefaultTraversal;
+import com.tinkerpop.gremlin.process.util.DefaultTraversalStrategies;
+import com.tinkerpop.gremlin.structure.Graph;
+
+/**
+ * Traversal interface defining new steps for wikidata.  Note that this must 
be written in Java
+ * because Groovy doesn't yet support default method implementations on 
interface methods.
+ */
+public interface WikidataTraversal<S, E> extends Traversal<S, E> {
+  public default String cowSays() {
+    return "moo";
+  }
+
+  public static <S> WikidataTraversal<S, S> of(Graph graph) {
+    return new DefaultWikidataTraversal(graph);
+  }
+
+  public class DefaultWikidataTraversal extends DefaultTraversal implements 
WikidataTraversal {
+    static {
+      DefaultTraversalStrategies traversalStrategies = new 
DefaultTraversalStrategies();
+      traversalStrategies.addStrategy(TraverserSourceStrategy.instance());
+      
TraversalStrategies.GlobalCache.registerStrategies(DefaultWikidataTraversal.class,
 traversalStrategies);
+    }
+
+    public DefaultWikidataTraversal(Graph graph) {
+      super(graph);
+    }
+  }
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/183307
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie79d93aeae67a060108603dd8e2394a1e7262cc6
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/gremlin
Gerrit-Branch: master
Gerrit-Owner: Manybubbles <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to