Him188 / yamlkt

Multiplatform YAML parser & serializer for kotlinx.serialization written in pure Kotlin
Apache License 2.0
132 stars 14 forks source link

Problems handling :: for string without quote #66

Open MarcinMoskala opened 9 months ago

MarcinMoskala commented 9 months ago

This code demonstrates the problem:

@Serializable
class HeaderConfig(
    val deckName: String,
    val articleFileName: String? = null,
    val packageDestination: String? = null,
)
val headerContent = """
    deckName: Aktywne::Zasady
    articleFileName: this/is/some/file.md
""".trimIndent()

suspend fun main() = coroutineScope<Unit> {
    val yaml by lazy {
        Yaml {
            encodeDefaultValues = false
            stringSerialization = YamlBuilder.StringSerialization.DOUBLE_QUOTATION
        }
    }
    val headerConfig = yaml.decodeFromString(HeaderConfig.serializer(), headerContent)
    println(headerConfig.deckName) // Aktywne
    println(headerConfig.articleFileName) // null
}

The result is:

Aktywne
null

Where it should be:

Aktywne::Zasady
this/is/some/file.md