diff --git a/CHANGELOG.md b/CHANGELOG.md index e5d85a2f..2849fce6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Name index comparator ### Changed +- DataSink `branch` is replaced with `putAll` to avoid confusion with DataTree methods ### Deprecated diff --git a/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/DataSource.kt b/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/DataSource.kt index d379d027..40086ca2 100644 --- a/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/DataSource.kt +++ b/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/DataSource.kt @@ -98,15 +98,15 @@ public val DataTree<*>.meta: Meta? get() = data?.meta /** * Provide subtree if it exists */ -public tailrec fun > GenericDataTree.branch(name: Name): TR? = +public tailrec fun > GenericDataTree.putAll(name: Name): TR? = when (name.length) { 0 -> self 1 -> items[name.first()] - else -> items[name.first()]?.branch(name.cutFirst()) + else -> items[name.first()]?.putAll(name.cutFirst()) } -public fun > GenericDataTree.branch(name: String): TR? = - branch(name.parseAsName()) +public fun > GenericDataTree.putAll(name: String): TR? = + this@branch.putAll(name.parseAsName()) public fun GenericDataTree<*, *>.isEmpty(): Boolean = data == null && items.isEmpty() diff --git a/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/dataBuilders.kt b/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/dataBuilders.kt index 8e8b6eaa..bdeb2798 100644 --- a/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/dataBuilders.kt +++ b/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/dataBuilders.kt @@ -16,11 +16,7 @@ public fun DataSink.put(value: NamedData) { put(value.name, value.data) } -public fun DataSink.branch(dataTree: DataTree) { - putAll(dataTree.asSequence()) -} - -public inline fun DataSink.branch( +public inline fun DataSink.putAll( prefix: Name, block: DataSink.() -> Unit, ) { @@ -35,24 +31,42 @@ public inline fun DataSink.branch( } } +@Deprecated("Use putAll", ReplaceWith("putAll(prefix, block)")) +public inline fun DataSink.branch( + prefix: Name, + block: DataSink.() -> Unit, +): Unit = putAll(prefix, block) + + +public inline fun DataSink.putAll( + prefix: String, + block: DataSink.() -> Unit, +): Unit = putAll(prefix.asName(), block) + +@Deprecated("Use putAll", ReplaceWith("putAll(prefix, block)")) public inline fun DataSink.branch( prefix: String, block: DataSink.() -> Unit, -): Unit = branch(prefix.asName(), block) - +): Unit = putAll(prefix, block) public fun DataSink.put(name: String, value: Data) { put(Name.parse(name), value) } -public fun DataSink.branch(name: Name, set: DataTree) { - branch(name) { putAll(set.asSequence()) } +public fun DataSink.putAll(name: Name, tree: DataTree) { + putAll(name) { putAll(tree.asSequence()) } } -public fun DataSink.branch(name: String, set: DataTree) { - branch(Name.parse(name)) { putAll(set.asSequence()) } +@Deprecated("Use putAll", ReplaceWith("putAll(name, tree)")) +public fun DataSink.branch(name: Name, tree: DataTree): Unit = putAll(name,tree) + +public fun DataSink.putAll(name: String, tree: DataTree) { + putAll(Name.parse(name)) { putAll(tree.asSequence()) } } +@Deprecated("Use putAll", ReplaceWith("putAll(name, tree)")) +public fun DataSink.branch(name: String, tree: DataTree): Unit = putAll(name,tree) + /** * Produce lazy [Data] and emit it into the [MutableDataTree] */ @@ -124,7 +138,7 @@ public fun DataSink.watchBranch( name: Name, dataSet: ObservableDataTree, ): Job { - branch(name, dataSet) + putAll(name, dataSet) return dataSet.updates().onEach { put(name + it.name, it.data) }.launchIn(dataSet.updatesScope) diff --git a/dataforge-data/src/jvmMain/kotlin/space/kscience/dataforge/data/dataSetBuilderInContext.kt b/dataforge-data/src/jvmMain/kotlin/space/kscience/dataforge/data/dataSetBuilderInContext.kt index cfccb02b..6055a5fa 100644 --- a/dataforge-data/src/jvmMain/kotlin/space/kscience/dataforge/data/dataSetBuilderInContext.kt +++ b/dataforge-data/src/jvmMain/kotlin/space/kscience/dataforge/data/dataSetBuilderInContext.kt @@ -15,7 +15,7 @@ public infix fun String.put(data: Data): Unit = */ context(DataSink) public infix fun String.put(dataSet: DataTree): Unit = - branch(this, dataSet) + this.putAll(this, dataSet) /** * Build and append node @@ -23,5 +23,5 @@ public infix fun String.put(dataSet: DataTree): Unit = context(DataSink) public infix fun String.put( block: DataSink.() -> Unit, -): Unit = branch(Name.parse(this), block) +): Unit = this.putAll(Name.parse(this), block) diff --git a/dataforge-data/src/jvmTest/kotlin/space/kscience/dataforge/data/DataTreeBuilderTest.kt b/dataforge-data/src/jvmTest/kotlin/space/kscience/dataforge/data/DataTreeBuilderTest.kt index 95b7a7bd..a4e732dc 100644 --- a/dataforge-data/src/jvmTest/kotlin/space/kscience/dataforge/data/DataTreeBuilderTest.kt +++ b/dataforge-data/src/jvmTest/kotlin/space/kscience/dataforge/data/DataTreeBuilderTest.kt @@ -43,7 +43,7 @@ internal class DataTreeBuilderTest { wrap("b", "b") } wrap("root", "root") - putAll(updateData) + this.putAll(updateData) } assertEquals("a", node["update.a"]?.await()) diff --git a/dataforge-workspace/src/commonMain/kotlin/space/kscience/dataforge/workspace/Workspace.kt b/dataforge-workspace/src/commonMain/kotlin/space/kscience/dataforge/workspace/Workspace.kt index f3ea322c..e4e315fd 100644 --- a/dataforge-workspace/src/commonMain/kotlin/space/kscience/dataforge/workspace/Workspace.kt +++ b/dataforge-workspace/src/commonMain/kotlin/space/kscience/dataforge/workspace/Workspace.kt @@ -11,7 +11,7 @@ import space.kscience.dataforge.provider.Provider import kotlin.coroutines.CoroutineContext -public fun interface DataSelector { +public fun interface DataSelector { public suspend fun select(workspace: Workspace, meta: Meta): DataTree } diff --git a/dataforge-workspace/src/commonMain/kotlin/space/kscience/dataforge/workspace/taskBuilders.kt b/dataforge-workspace/src/commonMain/kotlin/space/kscience/dataforge/workspace/taskBuilders.kt index 1900ff23..35fccc99 100644 --- a/dataforge-workspace/src/commonMain/kotlin/space/kscience/dataforge/workspace/taskBuilders.kt +++ b/dataforge-workspace/src/commonMain/kotlin/space/kscience/dataforge/workspace/taskBuilders.kt @@ -3,8 +3,8 @@ package space.kscience.dataforge.workspace import space.kscience.dataforge.actions.Action import space.kscience.dataforge.context.PluginFactory import space.kscience.dataforge.data.DataTree -import space.kscience.dataforge.data.branch import space.kscience.dataforge.data.forEach +import space.kscience.dataforge.data.putAll import space.kscience.dataforge.data.transform import space.kscience.dataforge.meta.* import space.kscience.dataforge.misc.DFExperimental @@ -101,7 +101,7 @@ public suspend inline fun TaskResultBuilder.transformEach( * Set given [dataSet] as a task result. */ public fun TaskResultBuilder.result(dataSet: DataTree) { - branch(dataSet) + this.putAll(dataSet) } /** @@ -113,7 +113,7 @@ public suspend inline fun TaskResultBuilder.actionFrom( action: Action, dependencyMeta: Meta = defaultDependencyMeta, ) { - branch(action.execute(from(selector, dependencyMeta), dependencyMeta)) + this.putAll(action.execute(from(selector, dependencyMeta), dependencyMeta)) } diff --git a/dataforge-workspace/src/jvmTest/kotlin/space/kscience/dataforge/workspace/FileDataTest.kt b/dataforge-workspace/src/jvmTest/kotlin/space/kscience/dataforge/workspace/FileDataTest.kt index 10a1c268..a06f24a5 100644 --- a/dataforge-workspace/src/jvmTest/kotlin/space/kscience/dataforge/workspace/FileDataTest.kt +++ b/dataforge-workspace/src/jvmTest/kotlin/space/kscience/dataforge/workspace/FileDataTest.kt @@ -23,7 +23,7 @@ import kotlin.test.assertEquals class FileDataTest { val dataNode = DataTree { - branch("dir") { + putAll("dir") { wrap("a", "Some string") { "content" put "Some string" }