diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2016-09-15 11:51:02 +0200 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2016-10-10 13:25:32 +0200 |
commit | a6997587fec8e73f28ca3145339ee971aeaa94b2 (patch) | |
tree | ab2e04706cf201e8a115afd70dd8dfc537e2981c /src/dotty/tools/dotc/printing/SyntaxHighlighting.scala | |
parent | 281dbb553b20ca16dd9e749acdfe39129e20fa28 (diff) | |
download | dotty-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.scala | 16 |
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 |