Add depth-first walk for data tree

This commit is contained in:
Alexander Nozik 2024-02-24 11:26:28 +03:00
parent facf7c3c7e
commit b2593d308e

View File

@ -93,6 +93,18 @@ public fun <T> DataTree<T>.asSequence(
} }
} }
/**
* Walk the data tree depth-first
*/
public fun <T, TR: GenericDataTree<T,TR>> TR.walk(
namePrefix: Name = Name.EMPTY,
): Sequence<TR> = sequence {
yield(this@walk)
items.forEach { (token, tree) ->
yieldAll(tree.walk(namePrefix + token))
}
}
public val DataTree<*>.meta: Meta? get() = data?.meta public val DataTree<*>.meta: Meta? get() = data?.meta
/** /**