Skip to content

sotojuan/exchalk

Repository files navigation

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.puts

Styles

Modifiers

  • reset
  • bold
  • dim
  • italic (not widely supported)
  • underline
  • inverse
  • hidden
  • strikethrough (not widely supported)

Colors

  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white
  • gray

Background colors

  • bg_black
  • bg_red
  • bg_green
  • bg_yellow
  • bg_blue
  • bg_magenta
  • bg_cyan
  • bg_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

About

Easier terminal styling

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages