Add depth-first walk for data tree

This commit is contained in:
Alexander Nozik 2024-02-24 15:01:27 +03:00
parent b2593d308e
commit 0e72b4b63c

View File

@ -96,10 +96,10 @@ public fun <T> DataTree<T>.asSequence(
/**
* Walk the data tree depth-first
*/
public fun <T, TR: GenericDataTree<T,TR>> TR.walk(
private fun <T, TR: GenericDataTree<T,TR>> TR.walk(
namePrefix: Name = Name.EMPTY,
): Sequence<TR> = sequence {
yield(this@walk)
): Sequence<Pair<Name,TR>> = sequence {
yield(namePrefix to this@walk)
items.forEach { (token, tree) ->
yieldAll(tree.walk(namePrefix + token))
}