From 15c84bd38e79e97371426b00b50698f461e96703 Mon Sep 17 00:00:00 2001 From: "jiahua.liu" Date: Fri, 14 Feb 2020 17:15:37 +0800 Subject: [PATCH] Ini config supported(TOML) --- mirai-console/build.gradle.kts | 2 +- .../kotlin/net/mamoe/mirai/MiraiConsole.kt | 2 +- .../net/mamoe/mirai/plugins/ConfigSection.kt | 37 ++++--------------- 3 files changed, 10 insertions(+), 31 deletions(-) diff --git a/mirai-console/build.gradle.kts b/mirai-console/build.gradle.kts index fd393c5dc..1a896636a 100644 --- a/mirai-console/build.gradle.kts +++ b/mirai-console/build.gradle.kts @@ -41,6 +41,6 @@ dependencies { api(kotlin("serialization")) api(group = "com.alibaba", name = "fastjson", version = "1.2.62") api(group = "org.yaml", name = "snakeyaml", version = "1.25") - api(group = "org.ini4j", name = "ini4j", version = "0.5.4") + api(group = "com.moandjiezana.toml", name = "toml4j", version = "0.7.2") // classpath is not set correctly by IDE } \ No newline at end of file diff --git a/mirai-console/src/main/kotlin/net/mamoe/mirai/MiraiConsole.kt b/mirai-console/src/main/kotlin/net/mamoe/mirai/MiraiConsole.kt index 0eedebfb7..5a65dc299 100644 --- a/mirai-console/src/main/kotlin/net/mamoe/mirai/MiraiConsole.kt +++ b/mirai-console/src/main/kotlin/net/mamoe/mirai/MiraiConsole.kt @@ -267,7 +267,7 @@ object MiraiConsole { } object MiraiProperties { - var config = File("$path/mirai.yml").loadAsConfig() + var config = File("$path/mirai.properties").loadAsConfig() var HTTP_API_ENABLE: Boolean by config.withDefaultWrite { true } var HTTP_API_PORT: Int by config.withDefaultWrite { 8080 } diff --git a/mirai-console/src/main/kotlin/net/mamoe/mirai/plugins/ConfigSection.kt b/mirai-console/src/main/kotlin/net/mamoe/mirai/plugins/ConfigSection.kt index f866a0994..2c6ab9523 100644 --- a/mirai-console/src/main/kotlin/net/mamoe/mirai/plugins/ConfigSection.kt +++ b/mirai-console/src/main/kotlin/net/mamoe/mirai/plugins/ConfigSection.kt @@ -13,6 +13,8 @@ import com.alibaba.fastjson.JSON import com.alibaba.fastjson.JSONObject import com.alibaba.fastjson.TypeReference import com.alibaba.fastjson.parser.Feature +import com.moandjiezana.toml.Toml +import com.moandjiezana.toml.TomlWriter import kotlinx.serialization.* import org.ini4j.Wini import org.yaml.snakeyaml.Yaml @@ -396,38 +398,15 @@ class YamlConfig internal constructor(file: File) : FileConfigImpl(file) { } -class IniConfig internal constructor(val file: File) : FileConfigImpl(file) { - private val iniObj by lazy { - Wini(file) - } - private val rootSection - get() = iniObj["root"] - - override fun asMap(): Map { - return JSON.parseObject( - JSONObject.toJSONString(rootSection), - object : TypeReference() {}, - Feature.OrderedField - ).asMap() - } - - override fun set(key: String, value: Any) { - iniObj.put("root", key, value) - } - - override fun get(key: String): Any? { - return iniObj.get("root", key) - } - - override fun save() { - iniObj.store() - } - +class IniConfig internal constructor(file: File) : FileConfigImpl(file) { override fun deserialize(content: String): ConfigSection { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + if (content.isEmpty() || content.isBlank()) { + return ConfigSectionImpl() + } + return ConfigSectionDelegation(Toml().read(content).toMap()) } override fun serialize(config: ConfigSection): String { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + return TomlWriter().write(config) } } \ No newline at end of file