exchalk
Easier terminal styling
This library is a very light abstraction over IO.ANSI that makes it easy to style text. It's heavily inspired by Node's chalk.
Install
In your mix.exs:
defp deps do
[
{ :exchalk, "~> 1.0.2" }
]
end
Then run mix deps.get.
Usage
IO.puts ExChalk.red("Hello world!")
# or
"Hello world!"
|> ExChalk.red
|> ExChalk.italic
|> ExChalk.bg_blue
|> IO.putsStyles
Modifiers
resetbolddimitalic(not widely supported)underlineinversehiddenstrikethrough(not widely supported)
Colors
blackredgreenyellowbluemagentacyanwhitegray
Background colors
bg_blackbg_redbg_greenbg_yellowbg_bluebg_magentabg_cyanbg_white
Why do I need to call ExChalk.to_str for string concatenation?
ExChalk by default returns IO lists instead of strings. IO lists can be printed, but since they aren't strings the <> doesn't work (though interpolation does!).
If you're planning on doing a lot of concatenation this may sound annoying, but there's a good reason. IO lists are a lot more performant than strings as they require less allocation and copying.
See José's explanation in this thread for more information.
256-colors
ExChalk does not support anything other than the base eight colors, which guarantees it will work on all terminals and systems. Some terminals, specifically xterm compliant ones, will support the full range of 8-bit colors. For this, the lower level IO.ANSI or the awesome Bunt can be used.
Windows
If you're on Windows, do yourself a favor and use cmder instead of cmd.exe.
License
MIT © Juan Soto