aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/printing/SyntaxHighlighting.scala
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-09-15 11:51:02 +0200
committerFelix Mulder <felix.mulder@gmail.com>2016-10-10 13:25:32 +0200
commita6997587fec8e73f28ca3145339ee971aeaa94b2 (patch)
treeab2e04706cf201e8a115afd70dd8dfc537e2981c /src/dotty/tools/dotc/printing/SyntaxHighlighting.scala
parent281dbb553b20ca16dd9e749acdfe39129e20fa28 (diff)
downloaddotty-a6997587fec8e73f28ca3145339ee971aeaa94b2.tar.gz
dotty-a6997587fec8e73f28ca3145339ee971aeaa94b2.tar.bz2
dotty-a6997587fec8e73f28ca3145339ee971aeaa94b2.zip
Add highlighter string interpolator
Diffstat (limited to 'src/dotty/tools/dotc/printing/SyntaxHighlighting.scala')
-rw-r--r--src/dotty/tools/dotc/printing/SyntaxHighlighting.scala16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/printing/SyntaxHighlighting.scala b/src/dotty/tools/dotc/printing/SyntaxHighlighting.scala
index 83c428976..932b980db 100644
--- a/src/dotty/tools/dotc/printing/SyntaxHighlighting.scala
+++ b/src/dotty/tools/dotc/printing/SyntaxHighlighting.scala
@@ -5,9 +5,25 @@ package printing
import parsing.Tokens._
import scala.annotation.switch
import scala.collection.mutable.StringBuilder
+import core.Contexts.Context
/** This object provides functions for syntax highlighting in the REPL */
object SyntaxHighlighting {
+
+ implicit class SyntaxFormatting(val sc: StringContext) extends AnyVal {
+ def hl(args: Any*)(implicit ctx: Context): String =
+ new SyntaxFormatter(sc).assemble(args)
+ }
+
+ private class SyntaxFormatter(sc: StringContext) extends Formatting.StringFormatter(sc) {
+ override def assemble(args: Seq[Any])(implicit ctx: Context): String = super.assemble {
+ args.map {
+ case str: String => new String(apply(str).toArray)
+ case x => x
+ }
+ }
+ }
+
val NoColor = Console.RESET
val CommentColor = Console.GREEN
val KeywordColor = Console.CYAN