diff --git a/CHANGELOG.md b/CHANGELOG.md index c91b1e81..207b6271 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ ### Fixed - Incorrect work of `MetaWithDefault::getValue` +- Incorrect work of scheme delegate ### Security diff --git a/build.gradle.kts b/build.gradle.kts index 755212d9..42cde112 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ plugins { allprojects { group = "space.kscience" - version = "0.10.1-dev" + version = "0.10.1-dev-1" } subprojects { diff --git a/dataforge-io/build.gradle.kts b/dataforge-io/build.gradle.kts index 52e47bb3..7cc8db2e 100644 --- a/dataforge-io/build.gradle.kts +++ b/dataforge-io/build.gradle.kts @@ -4,8 +4,6 @@ plugins { description = "IO module" -val ioVersion = "0.6.0" - kscience { jvm() js() @@ -17,8 +15,8 @@ kscience { } dependencies { api(projects.dataforgeContext) - api("org.jetbrains.kotlinx:kotlinx-io-core:$ioVersion") - api("org.jetbrains.kotlinx:kotlinx-io-bytestring:$ioVersion") + api(spclibs.kotlinx.io.core) + api(spclibs.kotlinx.io.bytestring) } } diff --git a/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/Scheme.kt b/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/Scheme.kt index 12eb4c68..1a5d2b0d 100644 --- a/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/Scheme.kt +++ b/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/Scheme.kt @@ -219,15 +219,15 @@ public fun <T : Scheme> Configurable.updateWith( /** - * A delegate that uses a [MetaReader] to wrap a child of this provider + * A delegate that uses a [SchemeSpec] to wrap a child of this provider */ -public fun <T : Scheme> MutableMetaProvider.scheme( +public fun <T : Scheme> MutableMeta.scheme( spec: SchemeSpec<T>, key: Name? = null, ): ReadWriteProperty<Any?, T> = object : ReadWriteProperty<Any?, T> { override fun getValue(thisRef: Any?, property: KProperty<*>): T { val name = key ?: property.name.asName() - val node = get(name) ?: MutableMeta().also { set(name, it) } + val node = getOrCreate(name) return spec.write(node) } @@ -243,7 +243,7 @@ public fun <T : Scheme> Scheme.scheme( ): ReadWriteProperty<Any?, T> = meta.scheme(spec, key) /** - * A delegate that uses a [MetaReader] to wrap a child of this provider. + * A delegate that uses a [SchemeSpec] to wrap a child of this provider. * Returns null if meta with given name does not exist. */ public fun <T : Scheme> MutableMeta.schemeOrNull( diff --git a/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/SpecificationTest.kt b/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/SpecificationTest.kt index dc9b9d64..442fe188 100644 --- a/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/SpecificationTest.kt +++ b/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/SpecificationTest.kt @@ -26,18 +26,17 @@ internal class TestScheme : Scheme() { companion object : SchemeSpec<TestScheme>(::TestScheme) } -private class SchemeWithInit: Scheme(){ +private class SchemeWithInit : Scheme() { init { set("initial", "initialValue") } var initial by string() - companion object: SchemeSpec<SchemeWithInit>(::SchemeWithInit) + companion object : SchemeSpec<SchemeWithInit>(::SchemeWithInit) } - class SpecificationTest { // @Test @@ -126,11 +125,11 @@ class SpecificationTest { } @Test - fun testListSubscription(){ + fun testListSubscription() { val scheme = TestScheme.empty() var value: Value? = null - scheme.v = ListValue(0.0,0.0,0.0) - scheme.useProperty(TestScheme::v){ + scheme.v = ListValue(0.0, 0.0, 0.0) + scheme.useProperty(TestScheme::v) { value = it } scheme.v = ListValue(1.0, 2.0, 3.0) @@ -138,17 +137,17 @@ class SpecificationTest { } @Test - fun testSubScheme(){ + fun testSubScheme() { val scheme = TestScheme.empty() scheme.sub.subValue = "aaa" - assertEquals("aaa",scheme.sub.subValue) + assertEquals("aaa", scheme.sub.subValue) } @Test - fun testSchemeWithInit(){ + fun testSchemeWithInit() { val scheme = SchemeWithInit() assertEquals("initialValue", scheme.initial) scheme.initial = "none"