Skip to content
Dyeing your terminal!
Elixir
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
config
lib
priv
test
.gitignore
README.md
mix.exs

README.md

Dye

Note: This lib uses uppercase sigil modifiers. So only works with elixir >= 1.1.0.

use Dye will replaces sigils: ~s and ~S.

Usage

iex(1)> use Dye
Dye

iex(2)> ~s"Red text"r
"\e[31mRed text\e[0m"

iex(3)> ~s"Bright red text"R
"\e[91mBright red text\e[0m"

iex(4)> ~s"Bright red text with green background"Rg
"\e[42;91mBright red text with green background\e[0m"

iex(5)> ~s"Underline"u
"\e[4mUnderline\e[0m"

iex(6)> ~s"Underline red text"ur
"\e[31;4mUnderline red text\e[0m"

iex(7)> ~s"Underline red text with bright green background"urG
"\e[102;31;4mUnderline red text with bright green background\e[0m"

Color Modifiers

$ mix test

Color modifiers demo

The first color modifier will be used as text color. If you only want to set background, you can set text then use I to inverse the color.

d: Default
k: Black
r: Red
g: Green
y: Yellow
b: Blue
m: Magenta
c: Cyan
w: White
K: Bright Black
R: Bright Red
G: Bright Green
Y: Bright Yellow
B: Bright Blue
M: Bright Magenta
C: Bright Cyan
W: Bright White

Special Modifiers

e: Don't reset at the end
I: Inverse text and background color
D: Bold
i: Italic
u: Underline
l: Blink slow
L: Blink rapid

Call sigil_s/sigil_S directly

The default implementation uses macro, which limits the modifiers can only be char list literal. The following won't work:

mods = 'Rg'
sigil_S(<<"foo">>, mods)

To use the function implementation, simply do:

use Dye, func: true
Something went wrong with that request. Please try again.