Polish ANSI formatting and underlying code (#779)

- change line numbers from blue to faint to improve legibility on dark backgrounds
- use EnumSet throughout
- move all ANSI classes into package core.util (no need to split them over util and runtime)
- rename AnsiCodingStringBuilder to AnsiStringBuilder
This commit is contained in:
translatenix
2024-11-05 08:54:35 -08:00
committed by GitHub
parent 40a08affa6
commit 6d161ce1d4
9 changed files with 57 additions and 58 deletions
@@ -20,6 +20,7 @@ import org.junit.jupiter.api.AfterAll
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import org.pkl.core.*
import org.pkl.core.util.AnsiStringBuilder
class StackTraceRendererTest {
companion object {
@@ -190,7 +191,7 @@ class StackTraceRendererTest {
}
val loop = StackTraceRenderer.StackFrameLoop(loopFrames, 1)
val frames = listOf(createFrame("bar", 1), createFrame("baz", 2), loop)
val formatter = AnsiCodingStringBuilder(false)
val formatter = AnsiStringBuilder(false)
renderer.doRender(frames, null, formatter, "", true)
val renderedFrames = formatter.toString()
assertThat(renderedFrames)
@@ -13,17 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.pkl.core.runtime
package org.pkl.core.util
import java.util.*
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.pkl.core.runtime.AnsiCodingStringBuilder.AnsiCode
import org.pkl.core.util.AnsiStringBuilder.AnsiCode
class AnsiCodingStringBuilderTest {
class AnsiStringBuilderTest {
@Test
fun `no formatting`() {
val result = AnsiCodingStringBuilder(false).append(AnsiCode.RED, "hello").toString()
val result = AnsiStringBuilder(false).append(AnsiCode.RED, "hello").toString()
assertThat(result).isEqualTo("hello")
}
@@ -39,14 +39,14 @@ class AnsiCodingStringBuilderTest {
@Test
fun `don't emit same color code`() {
val result =
AnsiCodingStringBuilder(true).append(AnsiCode.RED, "hi").append(AnsiCode.RED, "hi").toString()
AnsiStringBuilder(true).append(AnsiCode.RED, "hi").append(AnsiCode.RED, "hi").toString()
assertThat(result.escaped).isEqualTo("${red}hihi${reset}".escaped)
}
@Test
fun `only add needed codes`() {
val result =
AnsiCodingStringBuilder(true)
AnsiStringBuilder(true)
.append(AnsiCode.RED, "hi")
.append(EnumSet.of(AnsiCode.RED, AnsiCode.BOLD), "hi")
.toString()
@@ -56,7 +56,7 @@ class AnsiCodingStringBuilderTest {
@Test
fun `reset if need to subtract`() {
val result =
AnsiCodingStringBuilder(true)
AnsiStringBuilder(true)
.append(EnumSet.of(AnsiCode.RED, AnsiCode.BOLD), "hi")
.append(AnsiCode.RED, "hi")
.toString()
@@ -66,7 +66,7 @@ class AnsiCodingStringBuilderTest {
@Test
fun `plain text in between`() {
val result =
AnsiCodingStringBuilder(true)
AnsiStringBuilder(true)
.append(AnsiCode.RED, "hi")
.append("hi")
.append(AnsiCode.RED, "hi")