terminal colors, multi-line strings; bump to 0.8

This commit is contained in:
alex-s168
2024-03-28 22:44:15 +01:00
parent bd60bf5b27
commit e8d4fb16b1
9 changed files with 230 additions and 34 deletions

View File

@@ -0,0 +1,16 @@
package blitz.term
class AnsiiMode(internal val values: MutableList<Int>) {
constructor(mo: Int): this(mutableListOf(mo))
operator fun plus(other: AnsiiMode): AnsiiMode =
AnsiiMode((values + other.values).toMutableList())
}
private val escape = (27).toChar()
fun ansiiStr(str: String, vararg modes: AnsiiMode) =
if (modes.isEmpty())
str
else
"$escape[${modes.flatMap { it.values }.joinToString(separator = ";")}m$str$escape[0m"