#styling #text-color #terminal-colors

no-std stylic

A simple, fast library for styling text with ANSI escape codes

5 releases

0.2.3 Sep 6, 2024
0.2.2 Sep 6, 2024
0.2.1 Sep 6, 2024
0.2.0 Sep 6, 2024
0.1.0 Sep 1, 2024

#216 in Command-line interface

Download history 95/week @ 2024-08-29 232/week @ 2024-09-05 28/week @ 2024-09-12 9/week @ 2024-09-19 29/week @ 2024-09-26 21/week @ 2024-10-03

87 downloads per month

MPL-2.0 license

42KB
951 lines

Crates.io Version Crates.io License

A simple, fast library for styling text with ANSI escape codes.

Features

  • Simple, intuitive API
  • Fast, no allocations
  • #![no_std] support
  • No dependencies
  • Supports hyperlinks
  • Supports globally enabling and disabling styling

Usage

Use the style function to create a Styled value which can be styled using methods from the Stylize trait and can be displayed.

use stylic::{style, Stylize};

println!("{}", style("Hello, World!").green().italic());

The Stylize trait provides methods for setting the foreground color, background color, underline color, and attributes of the text (such as bold, italic, etc).

Available attributes are:

  • bold
  • dim
  • italic
  • underline
  • blink
  • reverse
  • hidden
  • strikethrough

Available colors include basic ANSI colors, the extended 256-color palette, and RGB colors.

The ANSI colors are:

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

Plus bright variants.

There are methods on the Style struct for setting the foreground color, background color and underline color to basic ansi colors:

use stylic::{BasicColor, Color, Stylize, style};

println!("{}", style("Hello, World!").black().on_blue());

There are also fg, bg and underline_colored methods that take a Color or any other value implementing Into<Color>, allowing the use of colors from the extended 256-color palette and RGB colors:

use stylic::{BasicColor, Color, Stylize, style};

// Setting the foreground color to red.
println!("{}", style("Hello, World!").fg(Color::Basic(BasicColor::Red)));
println!("{}", style("Hello, World!").fg(BasicColor::Red));

// Setting the background color to a color from the 256-color palette.
println!("{}", style("Hello, World!").bg(Color::Extended(58)));
println!("{}", style("Hello, World!").bg(58));

// Setting the underline color to a RGB color.
println!("{}", style("Hello, World!").underline_colored(Color::Rgb(255, 0, 255)));
println!("{}", style("Hello, World!").underline_colored((255, 0, 255)));

Styles can also be created and stored for later use:

use stylic::{style, Style, Stylize};

let my_style = Style::new().bold().bright_blue();
println!("{}", style("Hello, World!").apply(my_style));

Enabling and disabling styling

Use the set_style_enabled function from the enable module to globally enable or disable styling. See the module documentation for more information.

No runtime deps

Features