Change suspend DataSet.getData to operator DataSet.get

This commit is contained in:
Alexander Nozik 2022-04-24 09:19:14 +03:00
parent 6b41163ed3
commit eaa9d40d60
No known key found for this signature in database
GPG Key ID: F7FCF2DD25C71357
12 changed files with 29 additions and 29 deletions

View File

@ -10,6 +10,7 @@
- `Factory` is now `fun interface` and uses `build` instead of `invoke`. `invoke moved to an extension.
- KTor 2.0
- DataTree `items` call is blocking.
- DataSet `getData` is no longer suspended and renamed to `get`
### Deprecated

View File

@ -48,7 +48,7 @@ public class ReduceGroupBuilder<T : Any, R : Any>(
public fun group(
groupName: String,
filter: suspend (Name, Data<T>) -> Boolean,
filter: (Name, Data<T>) -> Boolean,
action: JoinGroup<T, R>.() -> Unit,
) {
groupRules += { source ->

View File

@ -28,7 +28,7 @@ public interface DataSet<out T : Any> {
/**
* Get data with given name.
*/
public suspend fun getData(name: Name): Data<T>?
public operator fun get(name: Name): Data<T>?
/**
@ -52,7 +52,7 @@ public interface DataSet<out T : Any> {
override fun flowData(): Flow<NamedData<Nothing>> = emptyFlow()
override suspend fun getData(name: Name): Data<Nothing>? = null
override fun get(name: Name): Data<Nothing>? = null
}
}
}
@ -101,4 +101,4 @@ public suspend fun DataSet<*>.toMeta(): Meta = Meta {
}
}
public val <T : Any> DataSet<T>.updatesWithData: Flow<NamedData<T>> get() = updates.mapNotNull { getData(it)?.named(it) }
public val <T : Any> DataSet<T>.updatesWithData: Flow<NamedData<T>> get() = updates.mapNotNull { get(it)?.named(it) }

View File

@ -57,10 +57,10 @@ public interface DataTree<out T : Any> : DataSet<T> {
override suspend fun listTop(prefix: Name): List<Name> =
getItem(prefix).tree?.items?.keys?.map { prefix + it } ?: emptyList()
override suspend fun getData(name: Name): Data<T>? = when (name.length) {
override fun get(name: Name): Data<T>? = when (name.length) {
0 -> null
1 -> items[name.firstOrNull()!!].data
else -> items[name.firstOrNull()!!].tree?.getData(name.cutFirst())
else -> items[name.firstOrNull()!!].tree?.get(name.cutFirst())
}
public companion object {
@ -73,7 +73,7 @@ public interface DataTree<out T : Any> : DataSet<T> {
}
}
public suspend fun <T : Any> DataSet<T>.getData(name: String): Data<T>? = getData(Name.parse(name))
public suspend fun <T : Any> DataSet<T>.getData(name: String): Data<T>? = get(Name.parse(name))
/**
* Get a [DataTreeItem] with given [name] or null if the item does not exist

View File

@ -50,7 +50,7 @@ public interface GroupRule {
scope.launch {
set.updates.collect { name ->
val data = set.getData(name)
val data = set.get(name)
@Suppress("NULLABLE_EXTENSION_OPERATOR_WITH_SAFE_CALL_RECEIVER")
val tagValue = data?.meta?.get(key)?.string ?: defaultTagValue

View File

@ -17,7 +17,7 @@ import kotlin.reflect.KType
* A stateless filtered [DataSet]
*/
public fun <T : Any> DataSet<T>.filter(
predicate: suspend (Name, Data<T>) -> Boolean,
predicate: (Name, Data<T>) -> Boolean,
): ActiveDataSet<T> = object : ActiveDataSet<T> {
override val dataType: KType get() = this@filter.dataType
@ -27,12 +27,12 @@ public fun <T : Any> DataSet<T>.filter(
override fun flowData(): Flow<NamedData<T>> =
this@filter.flowData().filter { predicate(it.name, it.data) }
override suspend fun getData(name: Name): Data<T>? = this@filter.getData(name)?.takeIf {
override fun get(name: Name): Data<T>? = this@filter.get(name)?.takeIf {
predicate(name, it)
}
override val updates: Flow<Name> = this@filter.updates.filter flowFilter@{ name ->
val theData = this@filter.getData(name) ?: return@flowFilter false
val theData = this@filter.get(name) ?: return@flowFilter false
predicate(name, theData)
}
}
@ -50,8 +50,8 @@ else object : ActiveDataSet<T> {
override fun flowData(): Flow<NamedData<T>> = this@withNamePrefix.flowData().map { it.data.named(prefix + it.name) }
override suspend fun getData(name: Name): Data<T>? =
name.removeHeadOrNull(name)?.let { this@withNamePrefix.getData(it) }
override fun get(name: Name): Data<T>? =
name.removeHeadOrNull(name)?.let { this@withNamePrefix.get(it) }
override val updates: Flow<Name> get() = this@withNamePrefix.updates.map { prefix + it }
}
@ -72,7 +72,7 @@ public fun <T : Any> DataSet<T>.branch(branchName: Name): DataSet<T> = if (branc
}
}
override suspend fun getData(name: Name): Data<T>? = this@branch.getData(branchName + name)
override fun get(name: Name): Data<T>? = this@branch.get(branchName + name)
override val updates: Flow<Name> get() = this@branch.updates.mapNotNull { it.removeHeadOrNull(branchName) }
}
@ -80,5 +80,5 @@ public fun <T : Any> DataSet<T>.branch(branchName: Name): DataSet<T> = if (branc
public fun <T : Any> DataSet<T>.branch(branchName: String): DataSet<T> = this@branch.branch(Name.parse(branchName))
@DFExperimental
public suspend fun <T : Any> DataSet<T>.rootData(): Data<T>? = getData(Name.EMPTY)
public suspend fun <T : Any> DataSet<T>.rootData(): Data<T>? = get(Name.EMPTY)

View File

@ -35,6 +35,6 @@ context(DataSetBuilder<T>) public fun <T : Any> CoroutineScope.setAndWatch(
): Job = launch {
node(name, dataSet)
dataSet.updates.collect { nameInBranch ->
data(name + nameInBranch, dataSet.getData(nameInBranch))
data(name + nameInBranch, dataSet.get(nameInBranch))
}
}

View File

@ -52,12 +52,12 @@ public fun <R : Any> DataSet<*>.select(
it as NamedData<R>
}
override suspend fun getData(name: Name): Data<R>? = this@select.getData(name)?.let { datum ->
override fun get(name: Name): Data<R>? = this@select.get(name)?.let { datum ->
if (checkDatum(name, datum)) datum.castOrNull(type) else null
}
override val updates: Flow<Name> = this@select.updates.filter {
val datum = this@select.getData(it) ?: return@filter false
val datum = this@select.get(it) ?: return@filter false
checkDatum(it, datum)
}
}
@ -73,11 +73,11 @@ public inline fun <reified R : Any> DataSet<*>.select(
/**
* Select a single datum if it is present and of given [type]
*/
public suspend fun <R : Any> DataSet<*>.selectOne(type: KType, name: Name): NamedData<R>? =
getData(name)?.castOrNull<R>(type)?.named(name)
public fun <R : Any> DataSet<*>.selectOne(type: KType, name: Name): NamedData<R>? =
get(name)?.castOrNull<R>(type)?.named(name)
public suspend inline fun <reified R : Any> DataSet<*>.selectOne(name: Name): NamedData<R>? =
public inline fun <reified R : Any> DataSet<*>.selectOne(name: Name): NamedData<R>? =
selectOne(typeOf<R>(), name)
public suspend inline fun <reified R : Any> DataSet<*>.selectOne(name: String): NamedData<R>? =
public inline fun <reified R : Any> DataSet<*>.selectOne(name: String): NamedData<R>? =
selectOne(typeOf<R>(), Name.parse(name))

View File

@ -88,9 +88,8 @@ public fun EnvelopeFormat.readFile(path: Path): Envelope {
*/
@Suppress("UNCHECKED_CAST")
@DFExperimental
public inline fun <reified T : Any> IOPlugin.resolveIOFormat(): IOFormat<T>? {
return ioFormatFactories.find { it.type.isSupertypeOf(typeOf<T>()) } as IOFormat<T>?
}
public inline fun <reified T : Any> IOPlugin.resolveIOFormat(): IOFormat<T>? =
ioFormatFactories.find { it.type.isSupertypeOf(typeOf<T>()) } as IOFormat<T>?
/**
* Read file containing meta using given [formatOverride] or file extension to infer meta type.

View File

@ -26,7 +26,7 @@ public interface TaskResult<out T : Any> : DataSet<T> {
public val taskMeta: Meta
override fun flowData(): Flow<TaskData<T>>
override suspend fun getData(name: Name): TaskData<T>?
override fun get(name: Name): TaskData<T>?
}
private class TaskResultImpl<out T : Any>(
@ -40,7 +40,7 @@ private class TaskResultImpl<out T : Any>(
workspace.wrapData(it, it.name, taskName, taskMeta)
}
override suspend fun getData(name: Name): TaskData<T>? = dataSet.getData(name)?.let {
override fun get(name: Name): TaskData<T>? = dataSet.get(name)?.let {
workspace.wrapData(it, name, taskName, taskMeta)
}
}

View File

@ -46,7 +46,7 @@ public interface Workspace : ContextAware, Provider {
}
public suspend fun produceData(taskName: Name, taskMeta: Meta, name: Name): TaskData<*>? =
produce(taskName, taskMeta).getData(name)
produce(taskName, taskMeta).get(name)
public companion object {
public const val TYPE: String = "workspace"

View File

@ -103,7 +103,7 @@ class SimpleWorkspaceTest {
val squareData = from(square)
val linearData = from(linear)
squareData.forEach { data ->
val newData: Data<Int> = data.combine(linearData.getData(data.name)!!) { l, r ->
val newData: Data<Int> = data.combine(linearData.get(data.name)!!) { l, r ->
l + r
}
data(data.name, newData)