From d6ed5f94e4994912eedf8cf687db7d4b9159dd10 Mon Sep 17 00:00:00 2001 From: Alexander Nozik Date: Sat, 17 Oct 2020 17:22:34 +0300 Subject: [PATCH] Removed IO dependency from Output --- CHANGELOG.md | 1 + build.gradle.kts | 2 +- .../dataforge/names/NameSerializationTest.kt | 18 ++++++++++++++++++ dataforge-output/build.gradle.kts | 2 +- .../hep/dataforge/output/TextRenderer.kt | 10 ++++------ dataforge-workspace/build.gradle.kts | 1 + 6 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 dataforge-meta/src/commonTest/kotlin/hep/dataforge/names/NameSerializationTest.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 35d67eee..baec4747 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Empty query in Name is null instead of "" - Provider provides an empty map instead of error by default - Hidden delegates hierarchy in favor of stdlib properties +- Removed io depdendency from `dataforge-output`. Replaced Output by Appendable. ### Deprecated - Context activation API diff --git a/build.gradle.kts b/build.gradle.kts index 3a407a3f..dde77dcf 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,7 +12,7 @@ allprojects { group = "hep.dataforge" version = dataforgeVersion - apply(plugin = "org.jetbrains.dokka") + apply() repositories { mavenLocal() diff --git a/dataforge-meta/src/commonTest/kotlin/hep/dataforge/names/NameSerializationTest.kt b/dataforge-meta/src/commonTest/kotlin/hep/dataforge/names/NameSerializationTest.kt new file mode 100644 index 00000000..7449be2f --- /dev/null +++ b/dataforge-meta/src/commonTest/kotlin/hep/dataforge/names/NameSerializationTest.kt @@ -0,0 +1,18 @@ +package hep.dataforge.names + +import kotlinx.serialization.json.Json +import kotlin.test.Test +import kotlin.test.assertEquals + + +class NameSerializationTest { + + @Test + fun testNameSerialization() { + val name = "aaa.bbb.ccc".toName() + val json = Json.encodeToJsonElement(Name.serializer(), name) + println(json) + val reconstructed = Json.decodeFromJsonElement(Name.serializer(), json) + assertEquals(name, reconstructed) + } +} \ No newline at end of file diff --git a/dataforge-output/build.gradle.kts b/dataforge-output/build.gradle.kts index e88f70d1..6051cb1c 100644 --- a/dataforge-output/build.gradle.kts +++ b/dataforge-output/build.gradle.kts @@ -8,7 +8,7 @@ kotlin { val commonMain by getting{ dependencies { api(project(":dataforge-context")) - api(project(":dataforge-io")) + //api(project(":dataforge-io")) } } } diff --git a/dataforge-output/src/commonMain/kotlin/hep/dataforge/output/TextRenderer.kt b/dataforge-output/src/commonMain/kotlin/hep/dataforge/output/TextRenderer.kt index b70030e4..9249de41 100644 --- a/dataforge-output/src/commonMain/kotlin/hep/dataforge/output/TextRenderer.kt +++ b/dataforge-output/src/commonMain/kotlin/hep/dataforge/output/TextRenderer.kt @@ -7,8 +7,6 @@ import hep.dataforge.provider.Type import hep.dataforge.provider.top import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.io.Output -import kotlinx.io.text.writeUtf8String import kotlin.reflect.KClass @@ -26,7 +24,7 @@ public interface TextFormat { */ public val type: KClass<*> - public suspend fun Output.render(obj: Any) + public suspend fun Appendable.render(obj: Any) public companion object { public const val TEXT_RENDERER_TYPE: String = "dataforge.textRenderer" @@ -37,15 +35,15 @@ public object DefaultTextFormat : TextFormat { override val priority: Int = Int.MAX_VALUE override val type: KClass<*> = Any::class - override suspend fun Output.render(obj: Any) { - writeUtf8String(obj.toString() + "\n") + override suspend fun Appendable.render(obj: Any) { + append(obj.toString() + "\n") } } /** * A text-based renderer */ -public class TextRenderer(override val context: Context, private val output: Output) : Renderer { +public class TextRenderer(override val context: Context, private val output: Appendable) : Renderer { private val cache = HashMap, TextFormat>() /** diff --git a/dataforge-workspace/build.gradle.kts b/dataforge-workspace/build.gradle.kts index b621b4c2..a18ddba6 100644 --- a/dataforge-workspace/build.gradle.kts +++ b/dataforge-workspace/build.gradle.kts @@ -10,6 +10,7 @@ kotlin { api(project(":dataforge-context")) api(project(":dataforge-data")) api(project(":dataforge-output")) + api(project(":dataforge-io")) } } }