diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2016-09-16 22:05:14 +0200 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2016-10-10 13:25:33 +0200 |
commit | 15dfb56d63a893c5c1e34a8566004085a617c28b (patch) | |
tree | 64feb75d25b18e58642df914bd4066071b497d21 /src/dotty | |
parent | 2764609bb17dfc8691d33fcc1c70a9891af59e70 (diff) | |
download | dotty-15dfb56d63a893c5c1e34a8566004085a617c28b.tar.gz dotty-15dfb56d63a893c5c1e34a8566004085a617c28b.tar.bz2 dotty-15dfb56d63a893c5c1e34a8566004085a617c28b.zip |
Add coloring util
Diffstat (limited to 'src/dotty')
-rw-r--r-- | src/dotty/tools/dotc/printing/Highlighting.scala | 60 |
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) +} |