You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ly...@apache.org on 2022/05/12 14:25:06 UTC

[tinkerpop] branch 3.5-dev updated: gremlin-go aliasing examples in README and example.go

This is an automated email from the ASF dual-hosted git repository.

lyndonb pushed a commit to branch 3.5-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/3.5-dev by this push:
     new 29600e361a gremlin-go aliasing examples in README and example.go
29600e361a is described below

commit 29600e361ae059b56bd2719b06fe4242e24cf0e5
Author: Valentyn Kahamlyk <vk...@users.noreply.github.com>
AuthorDate: Thu May 12 07:25:01 2022 -0700

    gremlin-go aliasing examples in README and example.go
    
    authored-by: valentynk <va...@bitquilltech.com>
---
 docs/src/reference/gremlin-variants.asciidoc | 42 ++++++++++++++++++++++++++
 gremlin-go/README.md                         | 44 ++++++++++++++++++++++++++++
 gremlin-go/example/example.go                |  7 ++++-
 3 files changed, 92 insertions(+), 1 deletion(-)

diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc
index 924974493e..bd3eab5016 100644
--- a/docs/src/reference/gremlin-variants.asciidoc
+++ b/docs/src/reference/gremlin-variants.asciidoc
@@ -1658,6 +1658,48 @@ capital letter in order to be public:
 
 *Tokens* - <<a-note-on-scopes,Scope.Global>>, <<a-note-on-scopes,Scope.Local>>
 
+[[gremlin-go-aliases]]
+=== Aliases
+To make the code more readable and close to the Gremlin query language), you can use aliases. These aliases can be named with capital letters to be consistent with non-aliased steps but will result in exported variables which could be problematic if not being used in a top-level program (i.e. not a redistributable package).
+[source,go]
+----
+	var __ = gremlingo.T__
+	var gt = gremlingo.P.Gt
+	var desc = gremlingo.Desc
+
+	results, err := g.V().HasLabel("person").Has("age", __.Is(gt(30))).Order().By("age", desc).ToList()
+----
+
+==== List of useful aliases
+[source,go]
+----
+	// common
+	var __ = gremlingo.T__
+	var TextP = gremlingo.TextP
+
+	// predicates
+	var between = gremlingo.P.Between
+	var eq = gremlingo.P.Eq
+	var gt = gremlingo.P.Gt
+	var gte = gremlingo.P.Gte
+	var inside = gremlingo.P.Inside
+	var lt = gremlingo.P.Lt
+	var lte = gremlingo.P.Lte
+	var neq = gremlingo.P.Neq
+	var not = gremlingo.P.Not
+	var outside = gremlingo.P.Outside
+	var test = gremlingo.P.Test
+	var within = gremlingo.P.Within
+	var without = gremlingo.P.Without
+	var and = gremlingo.P.And
+	var or = gremlingo.P.Or
+
+	// sorting
+	var shuffle = gremlingo.Shuffle
+	var asc = gremlingo.Asc
+	var desc = gremlingo.Desc
+----
+
 [[gremlin-go-limitations]]
 === Limitations
 
diff --git a/gremlin-go/README.md b/gremlin-go/README.md
index 5694cd09fd..e9f1bed9c8 100644
--- a/gremlin-go/README.md
+++ b/gremlin-go/README.md
@@ -136,6 +136,45 @@ Note: The exact import name as well as the module prefix for `NewDriverRemoteCon
 		})
 ```
 
+## Aliases
+To make the code more readable and close to the Gremlin query language), you can use aliases. These aliases can be named with capital letters to be consistent with non-aliased steps but will result in exported variables which could be problematic if not being used in a top-level program (i.e. not a redistributable package).
+```go
+	var __ = gremlingo.T__
+	var gt = gremlingo.P.Gt
+	var desc = gremlingo.Desc
+
+	results, err := g.V().HasLabel("person").Has("age", __.Is(gt(30))).Order().By("age", desc).ToList()
+```
+
+### List of useful aliases
+```go
+	// common
+	var __ = gremlingo.T__
+	var TextP = gremlingo.TextP
+
+	// predicates
+	var between = gremlingo.P.Between
+	var eq = gremlingo.P.Eq
+	var gt = gremlingo.P.Gt
+	var gte = gremlingo.P.Gte
+	var inside = gremlingo.P.Inside
+	var lt = gremlingo.P.Lt
+	var lte = gremlingo.P.Lte
+	var neq = gremlingo.P.Neq
+	var not = gremlingo.P.Not
+	var outside = gremlingo.P.Outside
+	var test = gremlingo.P.Test
+	var within = gremlingo.P.Within
+	var without = gremlingo.P.Without
+	var and = gremlingo.P.And
+	var or = gremlingo.P.Or
+
+	// sorting
+	var shuffle = gremlingo.Shuffle
+	var asc = gremlingo.Asc
+	var desc = gremlingo.Desc
+```
+
 ## Troubleshooting
 
 ### Can't establish connection and get any result
@@ -313,6 +352,11 @@ if err != nil {
 	results, err := g.V().HasLabel("person").Has("age", gremlingo.T__.Is(gremlingo.P.Gt(30))).Order().By("age", gremlingo.Desc).ToList()
 ```
 
+Or with aliases
+```go
+	results, err := g.V().HasLabel("person").Has("age", __.Is(gt(30))).Order().By("age", desc).ToList()
+```
+
 *List of all exports can be found at [pkg.go.dev](https://pkg.go.dev/github.com/apache/tinkerpop/gremlin-go/v3/driver)*
 
 ### Supported Data Types
diff --git a/gremlin-go/example/example.go b/gremlin-go/example/example.go
index 365565e566..561cde944a 100644
--- a/gremlin-go/example/example.go
+++ b/gremlin-go/example/example.go
@@ -24,6 +24,11 @@ import (
 	"github.com/apache/tinkerpop/gremlin-go/v3/driver"
 )
 
+// syntactic sugar
+var __ = gremlingo.T__
+var gt = gremlingo.P.Gt
+var desc = gremlingo.Desc
+
 func main() {
 	// Creating the connection to the server.
 	driverRemoteConnection, err := gremlingo.NewDriverRemoteConnection("ws://localhost:8182/gremlin",
@@ -41,7 +46,7 @@ func main() {
 	g := gremlingo.Traversal_().WithRemote(driverRemoteConnection)
 
 	// Perform traversal
-	result, err := g.V().HasLabel("person").Order().By("age").Values("name").ToList()
+	result, err := g.V().HasLabel("person").Has("age", __.Is(gt(28))).Order().By("age", desc).Values("name").ToList()
 	if err != nil {
 		fmt.Println(err)
 		return