@@ -233,7 +233,7 @@ class Steps[EndDomain, EndGraph, Labels <: HList](val raw: GremlinScala[EndGraph
233233 )
234234
235235 /**
236- * The or step is a filter with multiple or related filter traversals.
236+ * The or step is a filter with multiple `or` related filter traversals.
237237 */
238238 def or (orTraversals : (Steps [EndDomain , EndGraph , HNil ] => Steps [_, _, _])* )
239239 : Steps [EndDomain , EndGraph , Labels ] = {
@@ -250,6 +250,24 @@ class Steps[EndDomain, EndGraph, Labels <: HList](val raw: GremlinScala[EndGraph
250250 )
251251 }
252252
253+ /**
254+ * The and step is a filter with multiple `and` related filter traversals.
255+ */
256+ def and (andTraversals : (Steps [EndDomain , EndGraph , HNil ] => Steps [_, _, _])* )
257+ : Steps [EndDomain , EndGraph , Labels ] = {
258+ val rawAndTraversals = andTraversals.map {
259+ andTraversal => (rawTraversal : GremlinScala [EndGraph ]) =>
260+ andTraversal(
261+ new Steps [EndDomain , EndGraph , HNil ](
262+ rawTraversal.asInstanceOf [GremlinScala .Aux [EndGraph , HNil ]])
263+ ).raw
264+ }
265+
266+ new Steps [EndDomain , EndGraph , Labels ](
267+ raw.and(rawAndTraversals : _* )
268+ )
269+ }
270+
253271 /**
254272 * Step that orders nodes according to f.
255273 * */
0 commit comments