1
mirror of https://github.com/CarmJos/EasyConfiguration.git synced 2026-06-04 10:38:19 +08:00

refactor deserialize, add set collection dsl

This commit is contained in:
huanmeng-qwq
2025-09-27 02:49:57 +08:00
committed by Carm
parent fc4a11bc3e
commit 4a0e6b0676
5 changed files with 171 additions and 45 deletions
+5
View File
@@ -30,6 +30,11 @@
<artifactId>configured-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>configured-feature-collections</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
@@ -2,6 +2,8 @@ package cc.carm.lib.configuration.kotlin.value
import cc.carm.lib.configuration.adapter.ValueType
import cc.carm.lib.configuration.builder.collection.SimpleCollectionCreator
import cc.carm.lib.configuration.builder.set.ConfigSetBuilder
import cc.carm.lib.configuration.value.collections.ConfiguredSet
import cc.carm.lib.configuration.value.standard.ConfiguredList
import kotlin.reflect.KClass
@@ -28,3 +30,27 @@ inline fun <S : Any, reified V> listFrom(
} else configBuilder.from(valueType)
return sourceValueBuilder.also(block).build()
}
inline fun <S : Any, reified V> setFrom(
clazz: KClass<S>, block: (ConfigSetBuilder.SourceBuilder<S, V>.() -> Unit)
): ConfiguredSet<V> {
return setFrom(clazz.java, block)
}
inline fun <S : Any, reified V> setFrom(
clazz: Class<S>, block: (ConfigSetBuilder.SourceBuilder<S, V>.() -> Unit)
): ConfiguredSet<V> {
return setFrom(ValueType.of(clazz), block)
}
inline fun <S : Any, reified V> setFrom(
valueType: ValueType<S>, block: (ConfigSetBuilder.SourceBuilder<S, V>.() -> Unit)
): ConfiguredSet<V> {
val configBuilder = ConfiguredSet.builderOf(V::class.java)
val sourceValueBuilder: ConfigSetBuilder.SourceBuilder<S, V> =
if (valueType.rawType == String::class.java) {
@Suppress("UNCHECKED_CAST")
configBuilder.fromString() as ConfigSetBuilder.SourceBuilder<S, V>
} else configBuilder.from(valueType)
return sourceValueBuilder.also(block).build()
}