backuity / ansi-interpolator   1.1.0

Apache License 2.0 GitHub

A scala (2.11+) macro based ansi interpolator

Scala versions: 2.13 2.12 2.11

ansi-interpolator Build Status

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

Syntax errors are detected at compile time

[error] .../Main.scala:17: Unsupported tag underlin
[error]     println(ansi"Please %underlin{underline this : $str}")
[error]                          ^

Conditional ANSI codes rendering / Non-ANSI terminals support

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}"