Fix property usage for ObservableItemProvider
This commit is contained in:
parent
187094d942
commit
874a253292
@ -4,7 +4,7 @@ plugins {
|
||||
|
||||
allprojects {
|
||||
group = "space.kscience"
|
||||
version = "0.4.0-dev-6"
|
||||
version = "0.4.0-dev-7"
|
||||
}
|
||||
|
||||
subprojects {
|
||||
|
@ -414,8 +414,7 @@ public abstract interface class space/kscience/dataforge/meta/ObservableItemProv
|
||||
}
|
||||
|
||||
public final class space/kscience/dataforge/meta/ObservableItemProviderKt {
|
||||
public static final fun onChange (Lspace/kscience/dataforge/meta/ObservableItemProvider;Lkotlin/reflect/KProperty1;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
|
||||
public static synthetic fun onChange$default (Lspace/kscience/dataforge/meta/ObservableItemProvider;Lkotlin/reflect/KProperty1;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V
|
||||
public static synthetic fun useProperty$default (Lspace/kscience/dataforge/meta/ObservableItemProvider;Lkotlin/reflect/KProperty1;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V
|
||||
}
|
||||
|
||||
public abstract interface class space/kscience/dataforge/meta/ReadOnlySpecification {
|
||||
|
@ -1,5 +1,6 @@
|
||||
package space.kscience.dataforge.meta
|
||||
|
||||
import space.kscience.dataforge.misc.DFExperimental
|
||||
import space.kscience.dataforge.names.Name
|
||||
import space.kscience.dataforge.names.toName
|
||||
import kotlin.reflect.KProperty1
|
||||
@ -18,12 +19,21 @@ public interface ObservableItemProvider : ItemProvider {
|
||||
|
||||
public interface ItemPropertyProvider: ObservableItemProvider, MutableItemProvider
|
||||
|
||||
public fun <O : ObservableItemProvider, T : Any> O.onChange(
|
||||
/**
|
||||
* Use the value of the property in a [callBack].
|
||||
* The callback is called once immediately after subscription to pass the initial value.
|
||||
*
|
||||
* Optional [owner] property is used for
|
||||
*/
|
||||
@DFExperimental
|
||||
public fun <O : ObservableItemProvider, T : Any> O.useProperty(
|
||||
property: KProperty1<O, T?>,
|
||||
owner: Any? = null,
|
||||
callBack: O.(T?) -> Unit,
|
||||
) {
|
||||
onChange(null) { name, oldItem, newItem ->
|
||||
//Pass initial value.
|
||||
callBack(property.get(this))
|
||||
onChange(owner) { name, oldItem, newItem ->
|
||||
if (name == property.name.toName() && oldItem != newItem) {
|
||||
callBack(property.get(this))
|
||||
}
|
||||
|
@ -1,8 +1,10 @@
|
||||
package space.kscience.dataforge.meta
|
||||
|
||||
import space.kscience.dataforge.misc.DFExperimental
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@DFExperimental
|
||||
class SchemeTest {
|
||||
@Test
|
||||
fun testSchemeWrappingBeforeEdit(){
|
||||
@ -25,7 +27,7 @@ class SchemeTest {
|
||||
fun testSchemeSubscription(){
|
||||
val scheme = TestScheme.empty()
|
||||
var flag: Int? = null
|
||||
scheme.onChange(TestScheme::a){a->
|
||||
scheme.useProperty(TestScheme::a){a->
|
||||
flag = a
|
||||
}
|
||||
scheme.a = 2
|
||||
|
Loading…
Reference in New Issue
Block a user