aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/printing/Highlighting.scala60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/printing/Highlighting.scala b/src/dotty/tools/dotc/printing/Highlighting.scala
new file mode 100644
index 000000000..a496976a1
--- /dev/null
+++ b/src/dotty/tools/dotc/printing/Highlighting.scala
@@ -0,0 +1,60 @@
+package dotty.tools
+package dotc
+package printing
+
+import scala.collection.mutable
+
+object Highlighting {
+
+ implicit def colorToString(c: Color): String = c.toString
+ implicit def cbufToString(cb: ColorBuffer): String = cb.toString
+
+ abstract class Color(private val color: String) {
+ def text: String
+
+ override def toString = color + text + Console.RESET
+
+ def +(other: Color): ColorBuffer =
+ new ColorBuffer(this) + other
+
+ def +(other: String): ColorBuffer =
+ new ColorBuffer(this) + other
+ }
+
+ case class ColorBuffer(color: Color) {
+ val buffer = new mutable.ListBuffer[String]
+
+ buffer += color.toString
+
+ def +(color: Color): ColorBuffer = {
+ buffer += color.toString
+ this
+ }
+
+ def +(str: String): ColorBuffer = {
+ buffer += str
+ this
+ }
+
+ override def toString =
+ buffer.mkString
+ }
+
+ case class Red(text: String) extends Color(Console.RED)
+ case class Blue(text: String) extends Color(Console.BLUE)
+ case class Cyan(text: String) extends Color(Console.CYAN)
+ case class Black(text: String) extends Color(Console.BLACK)
+ case class Green(text: String) extends Color(Console.GREEN)
+ case class White(text: String) extends Color(Console.WHITE)
+ case class Yellow(text: String) extends Color(Console.YELLOW)
+ case class Magenta(text: String) extends Color(Console.MAGENTA)
+
+ case class RedB(text: String) extends Color(Console.RED_B)
+ case class BlueB(text: String) extends Color(Console.BLUE_B)
+ case class CyanB(text: String) extends Color(Console.CYAN_B)
+ case class BlackB(text: String) extends Color(Console.BLACK_B)
+ case class GreenB(text: String) extends Color(Console.GREEN_B)
+ case class WhiteB(text: String) extends Color(Console.WHITE_B)
+ case class YellowB(text: String) extends Color(Console.YELLOW_B)
+ case class MagentaB(text: String) extends Color(Console.MAGENTA_B)
+}