From 3fa44babb442e50ca24eab27344a956988f4ecd3 Mon Sep 17 00:00:00 2001 From: sciwhiz12 Date: Tue, 28 Oct 2025 03:54:10 +0800 Subject: [PATCH 1/3] Allow deserializing string-only text component Fixes #1 --- .../serializers/JsonToComponentSerializer.kt | 16 +++++++++++++++- src/test/kotlin/JsonSerializationTests.kt | 10 ++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/io/github/dockyardmc/scroll/serializers/JsonToComponentSerializer.kt b/src/main/kotlin/io/github/dockyardmc/scroll/serializers/JsonToComponentSerializer.kt index e712581..afb2208 100644 --- a/src/main/kotlin/io/github/dockyardmc/scroll/serializers/JsonToComponentSerializer.kt +++ b/src/main/kotlin/io/github/dockyardmc/scroll/serializers/JsonToComponentSerializer.kt @@ -2,9 +2,23 @@ package io.github.dockyardmc.scroll.serializers import io.github.dockyardmc.scroll.Component import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.JsonTransformingSerializer +import kotlinx.serialization.json.buildJsonObject object JsonToComponentSerializer { fun serialize(json: String): Component { - return Json.decodeFromString(json) + return Json.decodeFromString(ComponentDeserializer(), json) + } +} + +internal class ComponentDeserializer : JsonTransformingSerializer(Component.serializer()) { + override fun transformDeserialize(element: JsonElement): JsonElement = when (element) { + is JsonPrimitive -> buildJsonObject { + put("text", element) + } + + else -> element } } \ No newline at end of file diff --git a/src/test/kotlin/JsonSerializationTests.kt b/src/test/kotlin/JsonSerializationTests.kt index 64a58a0..627a630 100644 --- a/src/test/kotlin/JsonSerializationTests.kt +++ b/src/test/kotlin/JsonSerializationTests.kt @@ -2,6 +2,7 @@ import io.github.dockyardmc.scroll.ClickEvent import io.github.dockyardmc.scroll.Component import io.github.dockyardmc.scroll.serializers.JsonToComponentSerializer import io.github.dockyardmc.scroll.extensions.toComponent +import org.junit.jupiter.api.assertDoesNotThrow import kotlin.test.Test import kotlin.test.assertEquals @@ -43,4 +44,13 @@ class JsonSerializationTests { assertEquals(input.toJson(), expected) } + + @Test + fun testJsonStringToComponent() { + val input = "\"test_text\"" + val expected = Component(text = "test_text") + + val result = assertDoesNotThrow { JsonToComponentSerializer.serialize(input) } + assertEquals(expected.toJson(), result.toJson()) + } } \ No newline at end of file From b817cb6d20cebbd69b3e0fb1af79bcf5432d11e0 Mon Sep 17 00:00:00 2001 From: sciwhiz12 Date: Tue, 28 Oct 2025 03:58:43 +0800 Subject: [PATCH 2/3] Remove alternative JRE from Run Tests run config Use the module JRE rather than a specifically-named JRE. --- .run/Run Tests.run.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.run/Run Tests.run.xml b/.run/Run Tests.run.xml index 2ad121e..b48f65b 100644 --- a/.run/Run Tests.run.xml +++ b/.run/Run Tests.run.xml @@ -1,8 +1,6 @@ -