Skip to content

Commit c949205

Browse files
committed
Add modifiers to highlighting
1 parent 0c5ca76 commit c949205

File tree

1 file changed

+39
-31
lines changed

1 file changed

+39
-31
lines changed

src/dotty/tools/dotc/printing/Highlighting.scala

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,55 +6,63 @@ import scala.collection.mutable
66

77
object Highlighting {
88

9-
implicit def colorToString(c: Color): String = c.toString
10-
implicit def cbufToString(cb: ColorBuffer): String = cb.toString
9+
implicit def highlightToString(h: Highlight): String = h.toString
10+
implicit def hbufToString(hb: HighlightBuffer): String = hb.toString
1111

12-
abstract class Color(private val color: String) {
12+
abstract class Highlight(private val highlight: String) {
1313
def text: String
1414

15-
override def toString = color + text + Console.RESET
15+
override def toString = highlight + text + Console.RESET
1616

17-
def +(other: Color): ColorBuffer =
18-
new ColorBuffer(this) + other
17+
def +(other: Highlight): HighlightBuffer =
18+
new HighlightBuffer(this) + other
1919

20-
def +(other: String): ColorBuffer =
21-
new ColorBuffer(this) + other
20+
def +(other: String): HighlightBuffer =
21+
new HighlightBuffer(this) + other
2222
}
2323

24-
case class ColorBuffer(color: Color) {
24+
abstract class Modifier(private val mod: String, text: String) extends Highlight(Console.RESET) {
25+
override def toString =
26+
mod + super.toString
27+
}
28+
29+
case class HighlightBuffer(hl: Highlight) {
2530
val buffer = new mutable.ListBuffer[String]
2631

27-
buffer += color.toString
32+
buffer += hl.toString
2833

29-
def +(color: Color): ColorBuffer = {
30-
buffer += color.toString
34+
def +(other: Highlight): HighlightBuffer = {
35+
buffer += other.toString
3136
this
3237
}
3338

34-
def +(str: String): ColorBuffer = {
35-
buffer += str
39+
def +(other: String): HighlightBuffer = {
40+
buffer += other
3641
this
3742
}
3843

3944
override def toString =
4045
buffer.mkString
4146
}
4247

43-
case class Red(text: String) extends Color(Console.RED)
44-
case class Blue(text: String) extends Color(Console.BLUE)
45-
case class Cyan(text: String) extends Color(Console.CYAN)
46-
case class Black(text: String) extends Color(Console.BLACK)
47-
case class Green(text: String) extends Color(Console.GREEN)
48-
case class White(text: String) extends Color(Console.WHITE)
49-
case class Yellow(text: String) extends Color(Console.YELLOW)
50-
case class Magenta(text: String) extends Color(Console.MAGENTA)
51-
52-
case class RedB(text: String) extends Color(Console.RED_B)
53-
case class BlueB(text: String) extends Color(Console.BLUE_B)
54-
case class CyanB(text: String) extends Color(Console.CYAN_B)
55-
case class BlackB(text: String) extends Color(Console.BLACK_B)
56-
case class GreenB(text: String) extends Color(Console.GREEN_B)
57-
case class WhiteB(text: String) extends Color(Console.WHITE_B)
58-
case class YellowB(text: String) extends Color(Console.YELLOW_B)
59-
case class MagentaB(text: String) extends Color(Console.MAGENTA_B)
48+
case class Red(text: String) extends Highlight(Console.RED)
49+
case class Blue(text: String) extends Highlight(Console.BLUE)
50+
case class Cyan(text: String) extends Highlight(Console.CYAN)
51+
case class Black(text: String) extends Highlight(Console.BLACK)
52+
case class Green(text: String) extends Highlight(Console.GREEN)
53+
case class White(text: String) extends Highlight(Console.WHITE)
54+
case class Yellow(text: String) extends Highlight(Console.YELLOW)
55+
case class Magenta(text: String) extends Highlight(Console.MAGENTA)
56+
57+
case class RedB(text: String) extends Highlight(Console.RED_B)
58+
case class BlueB(text: String) extends Highlight(Console.BLUE_B)
59+
case class CyanB(text: String) extends Highlight(Console.CYAN_B)
60+
case class BlackB(text: String) extends Highlight(Console.BLACK_B)
61+
case class GreenB(text: String) extends Highlight(Console.GREEN_B)
62+
case class WhiteB(text: String) extends Highlight(Console.WHITE_B)
63+
case class YellowB(text: String) extends Highlight(Console.YELLOW_B)
64+
case class MagentaB(text: String) extends Highlight(Console.MAGENTA_B)
65+
66+
case class Bold(text: String) extends Modifier(Console.BOLD, text)
67+
case class Underlined(text: String) extends Modifier(Console.UNDERLINED, text)
6068
}

0 commit comments

Comments
 (0)