From 66eca84c5d308a8d05bcc96eadc659d322a4c09c Mon Sep 17 00:00:00 2001 From: Jake Wharton Date: Wed, 22 Feb 2023 00:02:43 -0500 Subject: [PATCH] Share constants for ANSI control codes --- .../src/commonMain/kotlin/com/jakewharton/mosaic/ansi.kt | 4 ++++ .../commonMain/kotlin/com/jakewharton/mosaic/rendering.kt | 8 ++++---- .../kotlin/com/jakewharton/mosaic/AnsiRenderingTest.kt | 4 ++-- .../kotlin/com/jakewharton/mosaic/MosaicTest.kt | 6 +++--- .../src/commonTest/kotlin/com/jakewharton/mosaic/stuff.kt | 3 --- 5 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 mosaic-runtime/src/commonMain/kotlin/com/jakewharton/mosaic/ansi.kt delete mode 100644 mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/stuff.kt diff --git a/mosaic-runtime/src/commonMain/kotlin/com/jakewharton/mosaic/ansi.kt b/mosaic-runtime/src/commonMain/kotlin/com/jakewharton/mosaic/ansi.kt new file mode 100644 index 00000000..cca54b9d --- /dev/null +++ b/mosaic-runtime/src/commonMain/kotlin/com/jakewharton/mosaic/ansi.kt @@ -0,0 +1,4 @@ +package com.jakewharton.mosaic + +internal const val clearLine = "\u001B[K" +internal const val cursorUp = "\u001B[F" diff --git a/mosaic-runtime/src/commonMain/kotlin/com/jakewharton/mosaic/rendering.kt b/mosaic-runtime/src/commonMain/kotlin/com/jakewharton/mosaic/rendering.kt index 26088988..6e19044d 100644 --- a/mosaic-runtime/src/commonMain/kotlin/com/jakewharton/mosaic/rendering.kt +++ b/mosaic-runtime/src/commonMain/kotlin/com/jakewharton/mosaic/rendering.kt @@ -47,14 +47,14 @@ internal class AnsiRendering : Rendering { clear() repeat(lastHeight) { - append("\u001B[F") // Cursor up line. + append(cursorUp) } val staticLines = statics.flatMap { it.render().split("\n") } val lines = canvas.render().split("\n") for (line in staticLines + lines) { append(line) - append("\u001B[K") // Clear rest of line. + append(clearLine) append('\n') } @@ -64,12 +64,12 @@ internal class AnsiRendering : Rendering { if (i > 0) { append('\n') } - append("\u001B[K") // Clear line. + append(clearLine) } // Move cursor back up to end of the new output. repeat(extraLines - 1) { - append("\u001B[F") // Cursor up line. + append(cursorUp) } lastHeight = lines.size diff --git a/mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/AnsiRenderingTest.kt b/mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/AnsiRenderingTest.kt index 0e7936ed..e9c4385e 100644 --- a/mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/AnsiRenderingTest.kt +++ b/mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/AnsiRenderingTest.kt @@ -16,8 +16,8 @@ class AnsiRenderingTest { // TODO We should not draw trailing whitespace. assertEquals( """ - |Hello $esc[K - |World!$esc[K + |Hello $clearLine + |World!$clearLine |""".trimMargin(), rendering.render(helloCanvas).toString(), ) diff --git a/mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/MosaicTest.kt b/mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/MosaicTest.kt index 1d20c57d..c54697c0 100644 --- a/mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/MosaicTest.kt +++ b/mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/MosaicTest.kt @@ -13,9 +13,9 @@ class MosaicTest { } } assertEquals(""" - |One $esc[K - |Two $esc[K - |Three$esc[K + |One $clearLine + |Two $clearLine + |Three$clearLine |""".trimMargin(), actual) } } diff --git a/mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/stuff.kt b/mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/stuff.kt deleted file mode 100644 index acfd1507..00000000 --- a/mosaic-runtime/src/commonTest/kotlin/com/jakewharton/mosaic/stuff.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.jakewharton.mosaic - -internal const val esc = "\u001B"