/ansi

ANSI colours, formatting, and control codes

Primary LanguageGleamApache License 2.0Apache-2.0

gleam-community/ansi

Format text with ANSI escape sequences.

Package Version Hex Docs

✨ This project is written in pure Gleam so you can use it anywhere Gleam runs: Erlang, Elixir, Node, Deno, even some browsers!


Quickstart

import gleam/io
import gleam_community/ansi

pub fn main() {
  let greeting = "Hello, " <> ansi.pink("world") <> "!"

  greeting
  |> ansi.bg_white
  |> io.println
}

Installation

gleam_community packages are published to hex.pm with the prefix gleam_community_. You can add them to your Gleam projects directly:

gleam add gleam_community_ansi

The docs can be found over at hexdocs.pm.

ANSI-what?

ANSI escape sequences date back to the 70s as a standard way to format text on various video text terminals. Since then they have been adopted by many software terminal emulators and platforms, including some Web browsers, and are a simple way to format text without platform-specific APIs.

The point of this package is to abstract the specific codes away and give you an easy-to-understand API for formatting and colouring terminal text. Still, here is a quick couple of examples of what's happening under the hood.

You can copy these examples straight into your terminal to see them in action!

  • Colour text yellow:

    $ echo "\e[33mhello"
  • Colour the background pink:

    $ echo "\e[45mhello"
  • Render text italic:

    $ echo "\e[3mhello\e[23m"

As you can see, the escape sequences are a bit obscure. Sure, you could hard code them, or you could use this package!