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:
@@ -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>
|
||||
|
||||
+26
@@ -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()
|
||||
}
|
||||
Reference in New Issue
Block a user