Improve MessageChainBuilder

This commit is contained in:
Karlatemp 2021-01-14 23:10:43 +08:00
parent 1e55d15047
commit a992b61261
No known key found for this signature in database
GPG Key ID: 21FBDDF664FF06F8

View File

@ -170,20 +170,18 @@ public class MessageChainBuilder private constructor(
///////
// IMPLEMENTATION
private var cache: StringBuilder? = null
private val cache: StringBuilder = StringBuilder()
private fun flushCache() {
cache?.let {
container.add(PlainText(it.toString()))
if (cache.isNotEmpty()) {
container.add(PlainText(cache.toString()))
cache.setLength(0)
}
cache = null
}
private inline fun withCache(block: StringBuilder.() -> Unit): MessageChainBuilder {
if (cache == null) {
cache = StringBuilder().apply(block)
} else {
cache!!.apply(block)
}
contract { callsInPlace(block, EXACTLY_ONCE) }
cache.apply(block)
return this
}