Skip to content

Commit dbe4492

Browse files
authored
fix: support deserialising extends as a list (#214)
1 parent 92bdcad commit dbe4492

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

src/main/kotlin/com/github/biomejs/intellijbiome/BiomeConfig.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,22 @@ package com.github.biomejs.intellijbiome
33
import com.intellij.openapi.vfs.VirtualFile
44
import kotlinx.serialization.ExperimentalSerializationApi
55
import kotlinx.serialization.Serializable
6+
import kotlinx.serialization.builtins.*
67
import kotlinx.serialization.json.Json
8+
import kotlinx.serialization.json.JsonArray
9+
import kotlinx.serialization.json.JsonElement
10+
import kotlinx.serialization.json.JsonTransformingSerializer
711
import kotlinx.serialization.json.decodeFromStream
812

913
@Serializable
1014
data class BiomeConfig(
1115
val root: Boolean? = null,
12-
val extends: String? = null,
16+
17+
@Serializable(with = ExtendsSerializer::class)
18+
val extends: List<String>? = null,
1319
) {
14-
fun isRootConfig() = root != false && extends != "//"
20+
fun isRootConfig() =
21+
root != false && extends?.contains("//") != true
1522

1623
companion object {
1724
@OptIn(ExperimentalSerializationApi::class)
@@ -29,4 +36,9 @@ data class BiomeConfig(
2936
}
3037
}
3138
}
39+
40+
object ExtendsSerializer : JsonTransformingSerializer<List<String>>(ListSerializer(String.serializer())) {
41+
override fun transformDeserialize(element: JsonElement): JsonElement =
42+
element as? JsonArray ?: JsonArray(listOf(element))
43+
}
3244
}

0 commit comments

Comments
 (0)