A scala (2.11+) macro based ansi interpolator.
It has two advantages over non-macro interpolators:
- is faster and lighter (brings no extra dependency at runtime)
- detects syntax issues at compile time
Add the following dependency to your SBT project:
"org.backuity" %% "ansi-interpolator" % "1.1" % "provided"
Note about provided
: see this stackoverflow answer
for a better SBT dependency scope.
Import the AnsiFormatter and use the ansi
interpolator:
import org.backuity.ansi.AnsiFormatter.FormattedHelper
ansi"Text containing ansi tags such as %bold{bold text} or %underline{can be %yellow{nested}}"
Here is the list of supported tags:
- bold
- underline
- italic (may not work on every terminal)
- blink (may not work on every terminal)
And color tags:
- black
- red
- green
- yellow
- blue
- magenta
- cyan
- white
[error] .../Main.scala:17: Unsupported tag underlin
[error] println(ansi"Please %underlin{underline this : $str}")
[error] ^
Use ansiCond"..."
instead of ansi"..."
to generate code that detects ANSI support (or lack thereof, e.g log files or windows terminal) at runtime.
If ANSI support isn't detected the ansiCond
interpolator will output a plain text.
ansiCond"%red{Hello}, I'm logs and windows %bold{friendly}"