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