tgbotapi/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ParseMode/ParseMode.kt

44 lines
1.2 KiB
Kotlin
Raw Normal View History

2018-12-26 08:07:24 +00:00
package com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode
import kotlinx.serialization.*
internal const val parseModeField = "parse_mode"
@Serializable(ParseModeSerializerObject::class)
sealed class ParseMode {
abstract val parseModeName: String
}
@Serializable(ParseModeSerializerObject::class)
object MarkdownParseMode : ParseMode() {
@Serializable
@SerialName(parseModeField)
override val parseModeName: String = "Markdown"
}
@Serializable(ParseModeSerializerObject::class)
object HTMLParseMode : ParseMode() {
@Serializable
@SerialName(parseModeField)
override val parseModeName: String = "HTML"
}
2019-03-31 02:20:14 +00:00
typealias Markdown = MarkdownParseMode
typealias HTML = HTMLParseMode
2018-12-26 08:07:24 +00:00
@Serializer(ParseMode::class)
internal class ParseModeSerializerObject: KSerializer<ParseMode> {
2019-02-21 06:21:33 +00:00
override fun deserialize(decoder: Decoder): ParseMode {
val mode = decoder.decodeString()
2018-12-26 08:07:24 +00:00
return when (mode) {
MarkdownParseMode.parseModeName -> MarkdownParseMode
HTMLParseMode.parseModeName -> HTMLParseMode
else -> throw IllegalArgumentException("Unknown parse mode")
}
}
2019-02-21 06:21:33 +00:00
override fun serialize(encoder: Encoder, obj: ParseMode) {
encoder.encodeString(obj.parseModeName)
2018-12-26 08:07:24 +00:00
}
}