class PathAwareTraversal[+A] extends Traversal[A]
- Alphabetic
- By Inheritance
- PathAwareTraversal
- Traversal
- IterableFactoryDefaults
- IterableOps
- IterableOnceOps
- IterableOnce
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new PathAwareTraversal(elementsWithPath: IterableOnce[(A, Vector[Any])])
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ++[B >: A](suffix: IterableOnce[B]): Traversal[B]
- Definition Classes
- IterableOps
- Annotations
- @inline()
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def addString(b: StringBuilder): StringBuilder
- Definition Classes
- IterableOnceOps
- Annotations
- @inline()
- final def addString(b: StringBuilder, sep: String): StringBuilder
- Definition Classes
- IterableOnceOps
- Annotations
- @inline()
- def addString(b: StringBuilder, start: String, sep: String, end: String): StringBuilder
- Definition Classes
- IterableOnceOps
- def aggregate(into: Growable[A]): Traversal[A]
aggregate all objects at this point into the given collection (side effect)
- def and(traversals: (Traversal[A]) => Traversal[_]*): Traversal[A]
only preserves elements for which _all of_ the given traversals have at least one result Works for arbitrary amount of 'AND' traversals.
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def cast[B]: Traversal[B]
casts all elements to given type note: this can lead to casting errors
- def choose[BranchOn >: Null, NewEnd](on: (Traversal[A]) => Traversal[BranchOn])(options: PartialFunction[BranchOn, (Traversal[A]) => Traversal[NewEnd]]): Traversal[NewEnd]
Branch step: based on the current element, match on something given a traversal, and provide resulting traversals based on the matched element.
Branch step: based on the current element, match on something given a traversal, and provide resulting traversals based on the matched element. Allows to implement conditional semantics: if, if/else, if/elseif, if/elseif/else, ...
- BranchOn
required to be >: Null because the implementation is using
null
as the default value. I didn't find a better way to implement all semantics with the niceties of PartialFunction, and also yolo...- NewEnd
The element type of the resulting traversal
- on
Traversal to get to what you want to match on
- options
PartialFunction from the matched element to the resulting traversal
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def coalesce[NewEnd](options: (Traversal[A]) => Traversal[NewEnd]*): Traversal[NewEnd]
Branch step: evaluates the provided traversals in order and returns the first traversal that emits at least one element.
- def coll: Traversal[A]
- Attributes
- protected
- Definition Classes
- Traversal → IterableOps
- def collect[B](pf: PartialFunction[A, B]): Traversal[B]
- Definition Classes
- PathAwareTraversal → IterableOps → IterableOnceOps
- def collectAll[B](implicit arg0: ClassTag[B]): Traversal[B]
collects and all elements of the given type
- def collectFirst[B](pf: PartialFunction[A, B]): Option[B]
- Definition Classes
- IterableOnceOps
- def concat[B >: A](suffix: IterableOnce[B]): Traversal[B]
- Definition Classes
- IterableOps
- def copyToArray[B >: A](xs: Array[B], start: Int, len: Int): Int
- Definition Classes
- IterableOnceOps
- def copyToArray[B >: A](xs: Array[B], start: Int): Int
- Definition Classes
- IterableOnceOps
- Annotations
- @deprecatedOverriding()
- def copyToArray[B >: A](xs: Array[B]): Int
- Definition Classes
- IterableOnceOps
- Annotations
- @deprecatedOverriding()
- def corresponds[B](that: IterableOnce[B])(p: (A, B) => Boolean): Boolean
- Definition Classes
- IterableOnceOps
- def count: Traversal[Int]
- Definition Classes
- Traversal
- def count(p: (A) => Boolean): Int
- Definition Classes
- IterableOnceOps
- def dedup: Traversal[A]
Deduplicate elements of this traversal - a.k.a.
Deduplicate elements of this traversal - a.k.a. distinct, unique, ...
- Definition Classes
- PathAwareTraversal → Traversal
- def dedupBy(fun: (A) => Any): Traversal[A]
deduplicate elements of this traversal by a given function
deduplicate elements of this traversal by a given function
- Definition Classes
- PathAwareTraversal → Traversal
- def drop(n: Int): Traversal[A]
- Definition Classes
- IterableOps → IterableOnceOps
- def dropRight(n: Int): Traversal[A]
- Definition Classes
- IterableOps
- def dropWhile(p: (A) => Boolean): Traversal[A]
- Definition Classes
- IterableOps → IterableOnceOps
- val elementsWithPath: IterableOnce[(A, Vector[Any])]
- def empty: Traversal[A]
- Definition Classes
- IterableFactoryDefaults → IterableOps
- def enablePathTracking: PathAwareTraversal[A]
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def exists(p: (A) => Boolean): Boolean
- Definition Classes
- IterableOnceOps
- def filter(pred: (A) => Boolean): Traversal[A]
- Definition Classes
- PathAwareTraversal → IterableOps → IterableOnceOps
- def filterNot(pred: (A) => Boolean): Traversal[A]
- Definition Classes
- PathAwareTraversal → IterableOps → IterableOnceOps
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def find(p: (A) => Boolean): Option[A]
- Definition Classes
- IterableOnceOps
- def flatMap[B](f: (A) => IterableOnce[B]): Traversal[B]
- Definition Classes
- PathAwareTraversal → IterableOps → IterableOnceOps
- def flatten[B](implicit asIterable: (A) => IterableOnce[B]): Traversal[B]
- Definition Classes
- IterableOps → IterableOnceOps
- def fold[A1 >: A](z: A1)(op: (A1, A1) => A1): A1
- Definition Classes
- IterableOnceOps
- def foldLeft[B](z: B)(op: (B, A) => B): B
- Definition Classes
- IterableOnceOps
- def foldRight[B](z: B)(op: (A, B) => B): B
- Definition Classes
- IterableOnceOps
- def forall(p: (A) => Boolean): Boolean
- Definition Classes
- IterableOnceOps
- def foreach[U](f: (A) => U): Unit
- Definition Classes
- IterableOnceOps
- def fromSpecific(coll: IterableOnce[A]): Traversal[A]
- Attributes
- protected
- Definition Classes
- IterableFactoryDefaults → IterableOps
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def groupBy[K](f: (A) => K): Map[K, Traversal[A]]
- Definition Classes
- IterableOps
- def groupCount[B](by: (A) => B): Map[B, Int]
group elements by a given transformation function and count how often the results appear
- def groupCount[B >: A]: Map[B, Int]
group elements and count how often they appear
- def groupMap[K, B](key: (A) => K)(f: (A) => B): Map[K, Traversal[B]]
- Definition Classes
- IterableOps
- def groupMapReduce[K, B](key: (A) => K)(f: (A) => B)(reduce: (B, B) => B): Map[K, B]
- Definition Classes
- IterableOps
- def grouped(size: Int): Iterator[Traversal[A]]
- Definition Classes
- IterableOps
- def hasNext: Boolean
- Definition Classes
- Traversal
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def head: A
- Definition Classes
- IterableOps
- def headOption: Option[A]
- Definition Classes
- IterableOps
- def help[B >: A](implicit elementType: ClassTag[B], searchPackages: DocSearchPackages): String
Print help/documentation based on the current elementType
A
.Print help/documentation based on the current elementType
A
. Relies on all step extensions being annotated with @Traversal / @Doc Note that this works independently of tab completion and implicit conversions in scope - it will simply list all documented steps in the classpath - def helpVerbose[B >: A](implicit elementType: ClassTag[B], searchPackages: DocSearchPackages): String
- def init: Traversal[A]
- Definition Classes
- IterableOps
- def inits: Iterator[Traversal[A]]
- Definition Classes
- IterableOps
- def is[B >: A](value: B): Traversal[A]
filters out everything that is _not_ the given value
- def isEmpty: Boolean
- Definition Classes
- IterableOnceOps
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isTraversableAgain: Boolean
- Definition Classes
- IterableOps → IterableOnceOps
- def iterableFactory: IterableFactory[Traversal]
- Definition Classes
- Traversal → IterableOps
- def iterate(): Unit
Execute the traversal without returning anything
- val iterator: Iterator[A]
- Definition Classes
- Traversal → IterableOnce
- def knownSize: Int
- Definition Classes
- IterableOnce
- def l: List[A]
Execute the traversal and convert the result to a list - shorthand for
toList
- def last: A
- Definition Classes
- IterableOps
- def lastOption: Option[A]
- Definition Classes
- IterableOps
- def map[B](f: (A) => B): Traversal[B]
- Definition Classes
- PathAwareTraversal → IterableOps → IterableOnceOps
- def mapElements[B](f: (A) => B): Traversal[B]
overriding to ensure that path tracking remains enabled after steps that instantiate new Traversals
overriding to ensure that path tracking remains enabled after steps that instantiate new Traversals
- Attributes
- protected
- Definition Classes
- PathAwareTraversal → Traversal
- def max[B >: A](implicit ord: Ordering[B]): A
- Definition Classes
- IterableOnceOps
- def maxBy[B](f: (A) => B)(implicit cmp: Ordering[B]): A
- Definition Classes
- IterableOnceOps
- def maxByOption[B](f: (A) => B)(implicit cmp: Ordering[B]): Option[A]
- Definition Classes
- IterableOnceOps
- def maxOption[B >: A](implicit ord: Ordering[B]): Option[A]
- Definition Classes
- IterableOnceOps
- def min[B >: A](implicit ord: Ordering[B]): A
- Definition Classes
- IterableOnceOps
- def minBy[B](f: (A) => B)(implicit cmp: Ordering[B]): A
- Definition Classes
- IterableOnceOps
- def minByOption[B](f: (A) => B)(implicit cmp: Ordering[B]): Option[A]
- Definition Classes
- IterableOnceOps
- def minOption[B >: A](implicit ord: Ordering[B]): Option[A]
- Definition Classes
- IterableOnceOps
- final def mkString: String
- Definition Classes
- IterableOnceOps
- Annotations
- @inline()
- final def mkString(sep: String): String
- Definition Classes
- IterableOnceOps
- Annotations
- @inline()
- final def mkString(start: String, sep: String, end: String): String
- Definition Classes
- IterableOnceOps
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def newSpecificBuilder: Builder[A, Traversal[A]]
- Attributes
- protected
- Definition Classes
- IterableFactoryDefaults → IterableOps
- def next(): A
- Definition Classes
- Traversal
- def nextOption(): Option[A]
- Definition Classes
- Traversal
- def nonEmpty: Boolean
- Definition Classes
- IterableOnceOps
- Annotations
- @deprecatedOverriding()
- def not(trav: (Traversal[A]) => Traversal[_]): Traversal[A]
only preserves elements if the provided traversal does _not_ have any results - alias for whereNot
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def or(traversals: (Traversal[A]) => Traversal[_]*): Traversal[A]
only preserves elements for which _at least one of_ the given traversals has at least one result Works for arbitrary amount of 'OR' traversals.
- def partition(p: (A) => Boolean): (Traversal[A], Traversal[A])
- Definition Classes
- IterableOps
- def partitionMap[A1, A2](f: (A) => Either[A1, A2]): (Traversal[A1], Traversal[A2])
- Definition Classes
- IterableOps
- def path: Traversal[Vector[Any]]
retrieve entire path that has been traversed thus far prerequisite: enablePathTracking has been called previously
retrieve entire path that has been traversed thus far prerequisite: enablePathTracking has been called previously
- Definition Classes
- PathAwareTraversal → Traversal
myTraversal.enablePathTracking.out.out.path.toList
TODO would be nice to preserve the types of the elements, at least if they have a common supertype
Example: - def product[B >: A](implicit num: Numeric[B]): B
- Definition Classes
- IterableOnceOps
- def reduce[B >: A](op: (B, B) => B): B
- Definition Classes
- IterableOnceOps
- def reduceLeft[B >: A](op: (B, A) => B): B
- Definition Classes
- IterableOnceOps
- def reduceLeftOption[B >: A](op: (B, A) => B): Option[B]
- Definition Classes
- IterableOnceOps
- def reduceOption[B >: A](op: (B, B) => B): Option[B]
- Definition Classes
- IterableOnceOps
- def reduceRight[B >: A](op: (A, B) => B): B
- Definition Classes
- IterableOnceOps
- def reduceRightOption[B >: A](op: (A, B) => B): Option[B]
- Definition Classes
- IterableOnceOps
- def repeat[B >: A](repeatTraversal: (Traversal[A]) => Traversal[B])(implicit behaviourBuilder: (Builder[B]) => Builder[B] = RepeatBehaviour.noop[B]): Traversal[B]
Repeat the given traversal
Repeat the given traversal
By default it will continue repeating until there's no more results, not emit anything along the way, and use depth first search.
The @param behaviourBuilder allows you to configure end conditions (until|whilst|maxDepth), whether it should emit elements it passes by, and which search algorithm to use (depth-first or breadth-first).
Search algorithm: Depth First Search (DFS) vs Breadth First Search (BFS): DFS means the repeat step will go deep before wide. BFS does the opposite: wide before deep. For example, given the graph
L3 <- L2 <- L1 <- Center -> R1 -> R2 -> R3 -> R4
DFS will iterate the nodes in the order:
Center, L1, L2, L3, R1, R2, R3, R4
BFS will iterate the nodes in the order:
Center, L1, R1, R1, R2, L3, R3, R4
- Definition Classes
- PathAwareTraversal → Traversal
.repeat(_.out) // repeat until there's no more elements, emit nothing, use DFS .repeat(_.out)(_.maxDepth(3)) // perform exactly three repeat iterations .repeat(_.out)(_.until(_.property(Name).endsWith("2"))) // repeat until the 'Name' property ends with '2' .repeat(_.out)(_.emit) // emit everything along the way .repeat(_.out)(_.emit.breadthFirstSearch) // emit everything, use BFS .repeat(_.out)(_.emit(_.property(Name).startsWith("L"))) // emit if the 'Name' property starts with 'L'
- Note
this works for domain-specific steps as well as generic graph steps - for details please take a look at the examples in RepeatTraversalTests: both .followedBy and .out work.
- See also
RepeatTraversalTests for more detail and examples for all of the above.
Example: - def reversed: Iterable[A]
- Attributes
- protected
- Definition Classes
- IterableOnceOps
- def scan[B >: A](z: B)(op: (B, B) => B): Traversal[B]
- Definition Classes
- IterableOps
- def scanLeft[B](z: B)(op: (B, A) => B): Traversal[B]
- Definition Classes
- IterableOps → IterableOnceOps
- def scanRight[B](z: B)(op: (A, B) => B): Traversal[B]
- Definition Classes
- IterableOps
- def sideEffect(fun: (A) => Unit): Traversal[A]
perform side effect without changing the contents of the traversal
- def sideEffectPF(pf: PartialFunction[A, Unit]): Traversal[A]
perform side effect without changing the contents of the traversal will only apply the partialFunction if it is defined for the given input - analogous to
collect
- def simplePath: Traversal[A]
Removes all results whose traversal path has repeated objects.
Removes all results whose traversal path has repeated objects.
- Definition Classes
- PathAwareTraversal → Traversal
- def size: Int
- Definition Classes
- IterableOnceOps
- def sizeCompare(that: Iterable[_]): Int
- Definition Classes
- IterableOps
- def sizeCompare(otherSize: Int): Int
- Definition Classes
- IterableOps
- final def sizeIs: SizeCompareOps
- Definition Classes
- IterableOps
- Annotations
- @inline()
- def slice(from: Int, until: Int): Traversal[A]
- Definition Classes
- IterableOps → IterableOnceOps
- def sliding(size: Int, step: Int): Iterator[Traversal[A]]
- Definition Classes
- IterableOps
- def sliding(size: Int): Iterator[Traversal[A]]
- Definition Classes
- IterableOps
- def sortBy[B](f: (A) => B)(implicit ord: Ordering[B]): Seq[A]
sort elements by the value of the given transformation function
- def sorted[B >: A](implicit ord: Ordering[B]): Seq[B]
sort elements by their natural order
- def span(p: (A) => Boolean): (Traversal[A], Traversal[A])
- Definition Classes
- IterableOps → IterableOnceOps
- def splitAt(n: Int): (Traversal[A], Traversal[A])
- Definition Classes
- IterableOps → IterableOnceOps
- def stepper[S <: Stepper[_]](implicit shape: StepperShape[A, S]): S
- Definition Classes
- IterableOnce
- def sum[B >: A](implicit num: Numeric[B]): B
- Definition Classes
- IterableOnceOps
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def tail: Traversal[A]
- Definition Classes
- IterableOps
- def tails: Iterator[Traversal[A]]
- Definition Classes
- IterableOps
- def take(n: Int): Traversal[A]
- Definition Classes
- IterableOps → IterableOnceOps
- def takeRight(n: Int): Traversal[A]
- Definition Classes
- IterableOps
- def takeWhile(p: (A) => Boolean): Traversal[A]
- Definition Classes
- IterableOps → IterableOnceOps
- def tapEach[U](f: (A) => U): Traversal[A]
- Definition Classes
- IterableOps → IterableOnceOps
- def to[C1](factory: Factory[A, C1]): C1
- Definition Classes
- IterableOnceOps
- def toArray[B >: A](implicit arg0: ClassTag[B]): Array[B]
- Definition Classes
- IterableOnceOps
- final def toBuffer[B >: A]: Buffer[B]
- Definition Classes
- IterableOnceOps
- Annotations
- @inline()
- def toIndexedSeq: IndexedSeq[A]
- Definition Classes
- IterableOnceOps
- def toIterable: Iterable[A]
- Definition Classes
- Traversal → IterableOps
- def toList: List[A]
- Definition Classes
- IterableOnceOps
- def toMap[K, V](implicit ev: <:<[A, (K, V)]): Map[K, V]
- Definition Classes
- IterableOnceOps
- def toSeq: Seq[A]
- Definition Classes
- IterableOnceOps
- def toSet[B >: A]: Set[B]
- Definition Classes
- IterableOnceOps
- def toSetImmutable[B >: A]: Set[B]
Execute the traversal and convert the result to an immutable Set
Execute the traversal and convert the result to an immutable Set
- Definition Classes
- Traversal
- def toSetMutable[B >: A]: Set[B]
Execute the traversal and return a mutable.Set (better performance than
immutableSet
)Execute the traversal and return a mutable.Set (better performance than
immutableSet
)- Definition Classes
- Traversal
- def toString(): String
- Definition Classes
- Traversal → AnyRef → Any
- def toVector: Vector[A]
- Definition Classes
- IterableOnceOps
- def transpose[B](implicit asIterable: (A) => Iterable[B]): Traversal[Traversal[B]]
- Definition Classes
- IterableOps
- def union[B](traversals: (Traversal[A]) => Traversal[B]*): Traversal[B]
union step from the current point
- def unzip[A1, A2](implicit asPair: (A) => (A1, A2)): (Traversal[A1], Traversal[A2])
- Definition Classes
- IterableOps
- def unzip3[A1, A2, A3](implicit asTriple: (A) => (A1, A2, A3)): (Traversal[A1], Traversal[A2], Traversal[A3])
- Definition Classes
- IterableOps
- def view: View[A]
- Definition Classes
- IterableOps
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- def where(trav: (Traversal[A]) => Traversal[_]): Traversal[A]
only preserves elements if the provided traversal has at least one result
- def whereNot(trav: (Traversal[A]) => Traversal[_]): Traversal[A]
only preserves elements if the provided traversal does _not_ have any results
- def withFilter(p: (A) => Boolean): WithFilter[A, Traversal]
- Definition Classes
- IterableOps
- def within[B >: A](values: Set[B]): Traversal[A]
filters out all elements that are _not_ in the provided set
- def without[B >: A](values: Set[B]): Traversal[A]
filters out all elements that _are_ in the provided set
- def zip[B](that: IterableOnce[B]): Traversal[(A, B)]
- Definition Classes
- IterableOps
- def zipAll[A1 >: A, B](that: Iterable[B], thisElem: A1, thatElem: B): Traversal[(A1, B)]
- Definition Classes
- IterableOps
- def zipWithIndex: Traversal[(A, Int)]
- Definition Classes
- IterableOps → IterableOnceOps
Deprecated Value Members
- def ++:[B >: A](that: IterableOnce[B]): Traversal[B]
- Definition Classes
- IterableOps
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use ++ instead of ++: for collections of type Iterable
- final def /:[B](z: B)(op: (B, A) => B): B
- Definition Classes
- IterableOnceOps
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.13.0) Use foldLeft instead of /:
- final def :\[B](z: B)(op: (A, B) => B): B
- Definition Classes
- IterableOnceOps
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.13.0) Use foldRight instead of :\
- def aggregate[B](z: => B)(seqop: (B, A) => B, combop: (B, B) => B): B
- Definition Classes
- IterableOnceOps
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0)
aggregate
is not relevant for sequential collections. UsefoldLeft(z)(seqop)
instead.
- def companion: IterableFactory[Traversal]
- Definition Classes
- IterableOps
- Annotations
- @deprecated @deprecatedOverriding() @inline()
- Deprecated
(Since version 2.13.0) Use iterableFactory instead
- final def copyToBuffer[B >: A](dest: Buffer[B]): Unit
- Definition Classes
- IterableOnceOps
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.13.0) Use
dest ++= coll
instead
- def hasDefiniteSize: Boolean
- Definition Classes
- IterableOnceOps
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Check .knownSize instead of .hasDefiniteSize for more actionable information (see scaladoc for details)
- final def repr: Traversal[A]
- Definition Classes
- IterableOps
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use coll instead of repr in a collection implementation, use the collection value itself from the outside
- final def toIterator: Iterator[A]
- Definition Classes
- IterableOnceOps
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.13.0) Use .iterator instead of .toIterator
- final def toStream: Stream[A]
- Definition Classes
- IterableOnceOps
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.13.0) Use .to(LazyList) instead of .toStream
- final def toTraversable: Traversable[A]
- Definition Classes
- IterableOps
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) toTraversable is internal and will be made protected; its name is similar to
toList
ortoSeq
, but it doesn't copy non-immutable collections
- def view(from: Int, until: Int): View[A]
- Definition Classes
- IterableOps
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use .view.slice(from, until) instead of .view(from, until)