diff --git a/build.gradle.kts b/build.gradle.kts index 04cce594..cd3e5d61 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,10 +1,12 @@ +import scientifik.ScientifikExtension + plugins { - id("scientifik.mpp") version "0.2.1" apply false - id("scientifik.jvm") version "0.2.1" apply false - id("scientifik.publish") version "0.2.1" apply false + id("scientifik.mpp") version "0.2.2" apply false + id("scientifik.jvm") version "0.2.2" apply false + id("scientifik.publish") version "0.2.2" apply false } -val dataforgeVersion by extra("0.1.4") +val dataforgeVersion by extra("0.1.5-dev-1") val bintrayRepo by extra("dataforge") val githubProject by extra("dataforge-core") @@ -15,7 +17,8 @@ allprojects { } subprojects { - if (name.startsWith("dataforge")) { - apply(plugin = "scientifik.publish") - } + apply(plugin = "scientifik.publish") + afterEvaluate { + extensions.findByType()?.apply { withDokka() } + } } \ No newline at end of file diff --git a/dataforge-context/src/commonMain/kotlin/hep/dataforge/context/ContextBuilder.kt b/dataforge-context/src/commonMain/kotlin/hep/dataforge/context/ContextBuilder.kt index 58a03554..0aed9b7f 100644 --- a/dataforge-context/src/commonMain/kotlin/hep/dataforge/context/ContextBuilder.kt +++ b/dataforge-context/src/commonMain/kotlin/hep/dataforge/context/ContextBuilder.kt @@ -1,5 +1,6 @@ package hep.dataforge.context +import hep.dataforge.meta.DFBuilder import hep.dataforge.meta.MetaBuilder import hep.dataforge.meta.buildMeta import hep.dataforge.names.toName @@ -7,6 +8,7 @@ import hep.dataforge.names.toName /** * A convenience builder for context */ +@DFBuilder class ContextBuilder(var name: String = "@anonymous", val parent: Context = Global) { private val plugins = ArrayList() private var meta = MetaBuilder() diff --git a/dataforge-data/src/commonMain/kotlin/hep/dataforge/data/MapAction.kt b/dataforge-data/src/commonMain/kotlin/hep/dataforge/data/MapAction.kt index 8c543927..89e887db 100644 --- a/dataforge-data/src/commonMain/kotlin/hep/dataforge/data/MapAction.kt +++ b/dataforge-data/src/commonMain/kotlin/hep/dataforge/data/MapAction.kt @@ -1,9 +1,6 @@ package hep.dataforge.data -import hep.dataforge.meta.Meta -import hep.dataforge.meta.MetaBuilder -import hep.dataforge.meta.builder -import hep.dataforge.meta.seal +import hep.dataforge.meta.* import hep.dataforge.names.Name import kotlin.reflect.KClass @@ -20,6 +17,7 @@ data class ActionEnv( /** * Action environment */ +@DFBuilder class MapActionBuilder(var name: Name, var meta: MetaBuilder, val actionMeta: Meta) { lateinit var result: suspend ActionEnv.(T) -> R diff --git a/dataforge-io/src/commonMain/kotlin/hep/dataforge/io/serialization/serializationUtils.kt b/dataforge-io/src/commonMain/kotlin/hep/dataforge/io/serialization/serializationUtils.kt index 09d17054..b32abb14 100644 --- a/dataforge-io/src/commonMain/kotlin/hep/dataforge/io/serialization/serializationUtils.kt +++ b/dataforge-io/src/commonMain/kotlin/hep/dataforge/io/serialization/serializationUtils.kt @@ -1,9 +1,7 @@ package hep.dataforge.io.serialization -import kotlinx.serialization.CompositeDecoder -import kotlinx.serialization.Decoder -import kotlinx.serialization.KSerializer -import kotlinx.serialization.SerialDescriptor +import hep.dataforge.meta.DFExperimental +import kotlinx.serialization.* import kotlinx.serialization.internal.* /** @@ -71,10 +69,24 @@ inline fun KSerializer.descriptor( ): SerialDescriptor = SerialDescriptorBuilder(SerialClassDescImpl(name)).apply(block).build() -fun Decoder.decodeStructure( +@DFExperimental +inline fun Decoder.decodeStructure( desc: SerialDescriptor, vararg typeParams: KSerializer<*> = emptyArray(), - block: CompositeDecoder.() -> Unit + crossinline block: CompositeDecoder.() -> R +): R { + val decoder = beginStructure(desc, *typeParams) + val res = decoder.block() + decoder.endStructure(desc) + return res +} + +inline fun Encoder.encodeStructure( + desc: SerialDescriptor, + vararg typeParams: KSerializer<*> = emptyArray(), + block: CompositeEncoder.() -> Unit ) { - beginStructure(desc, *typeParams).apply(block).endStructure(desc) + val encoder = beginStructure(desc, *typeParams) + encoder.block() + encoder.endStructure(desc) } \ No newline at end of file diff --git a/dataforge-output-html/src/commonMain/kotlin/hep/dataforge/output/html/HtmlOutput.kt b/dataforge-output-html/src/commonMain/kotlin/hep/dataforge/output/html/HtmlOutput.kt index b54b7eb7..3ff23403 100644 --- a/dataforge-output-html/src/commonMain/kotlin/hep/dataforge/output/html/HtmlOutput.kt +++ b/dataforge-output-html/src/commonMain/kotlin/hep/dataforge/output/html/HtmlOutput.kt @@ -47,7 +47,7 @@ class HtmlOutput(override val context: Context, private val consumer: T } /** - * A text or binary renderer based on [kotlinx.io.core.Output] + * A text or binary renderer based on [Output] */ @Type(HTML_CONVERTER_TYPE) interface HtmlBuilder { diff --git a/dataforge-workspace/src/commonMain/kotlin/hep/dataforge/workspace/TaskBuilder.kt b/dataforge-workspace/src/commonMain/kotlin/hep/dataforge/workspace/TaskBuilder.kt index 80d89e24..3ff86325 100644 --- a/dataforge-workspace/src/commonMain/kotlin/hep/dataforge/workspace/TaskBuilder.kt +++ b/dataforge-workspace/src/commonMain/kotlin/hep/dataforge/workspace/TaskBuilder.kt @@ -3,6 +3,7 @@ package hep.dataforge.workspace import hep.dataforge.context.Context import hep.dataforge.data.* import hep.dataforge.descriptors.NodeDescriptor +import hep.dataforge.meta.DFBuilder import hep.dataforge.meta.Meta import hep.dataforge.meta.get import hep.dataforge.meta.string @@ -13,7 +14,7 @@ import hep.dataforge.names.toName import kotlin.jvm.JvmName import kotlin.reflect.KClass -@TaskBuildScope +@DFBuilder class TaskBuilder(val name: Name, val type: KClass) { private var modelTransform: TaskModelBuilder.(Meta) -> Unit = { allData() } // private val additionalDependencies = HashSet() diff --git a/dataforge-workspace/src/commonMain/kotlin/hep/dataforge/workspace/TaskModel.kt b/dataforge-workspace/src/commonMain/kotlin/hep/dataforge/workspace/TaskModel.kt index b4ccb7ae..71a5c006 100644 --- a/dataforge-workspace/src/commonMain/kotlin/hep/dataforge/workspace/TaskModel.kt +++ b/dataforge-workspace/src/commonMain/kotlin/hep/dataforge/workspace/TaskModel.kt @@ -58,9 +58,6 @@ fun TaskModel.buildInput(workspace: Workspace): DataTree { }.build() } -@DslMarker -annotation class TaskBuildScope - interface TaskDependencyContainer { val defaultMeta: Meta fun add(dependency: Dependency)