Skip to content

backuity/ansi-interpolator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Usage

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

About

A scala (2.11+) macro based ansi interpolator

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages