Skip to content
/ vari Public

Vari (Väri) is a Rust library for formatting strings with colors and cosmetic stuff to the terminal.

License

Notifications You must be signed in to change notification settings

azur1s/vari

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

Vari

crates.io crates.io crates.io License

Vari (Väri) is a Rust library for formatting strings with colors and cosmetic stuff to the terminal. Like Rich library for Python.

Väri means "color" in Finnish.

Installing

Vari come with color anchors as default feature, The other opt-in features are: "log", "fun",

[dependencies]
vari =  "0.2.1"

Features

Color Anchor

This is in default features.

Color anchor are a bbcode-like markup for colors and styles (eg. "[$red]", "[bg$yellow]", "[$bold]")

Anchors

Colors:

  • [$black]
  • [$red]
  • [$green]
  • [$yellow]
  • [$blue]
  • [$magenta]
  • [$cyan]
  • [$white]
  • [$reset] or [$r] or [$/]

Bright colors:

  • [$bright_black] or [$brightblack]
  • [$bright_red] or [$brightred]
  • [$bright_green] or [$brightgreen]
  • [$bright_yellow] or [$brightyellow]
  • [$bright_blue] or [$brightblue]
  • [$bright_magenta] or [$brightmagenta]
  • [$bright_cyan] or [$brightcyan]
  • [$bright_white] or [$brightwhite]

Styles

  • [$regular]
  • [$bold]
  • [$dim] or [$low] or [$low_intensity] or [$lowintensity]
  • [$italic]
  • [$underline]
  • [$blink] or [$blinking]
  • [$reverse] or [$reversed]
  • [$invisible] or [$hidden]
  • [$strikethrough] or [$strike_through]

Note: [bg$any] is a valid anchors, it will be translated to [$reversed][$any] (where `any` is the color/style name above)

// [$/] is shorthand for [$reset]
let message = vari::format("[$blue]Hello, [$green]World![$/]");
println!("{}", message);

// Custom RGB!
println!("{}", vari::format("[$[114, 119, 39]]#727727![$[66, 4, 32]] Do you see it?[$/]"));

// Style anchor and also easy macros :O
vprintln!("{}Bold and Italic :O{}", "[$bold][$italic]", "[$/]");

// Background color
vprintln!("{}Backgroundssss{}[$/]", "[bg$magenta]", "[bg$[188, 188, 188]]World![$/]")

// Hexadecimal
vprintln!("[$#ffffff]Hello, [$#000000]World![$/]");

Colorize

[dependencies]
vari = { version =  "0.2.1", features = ["colorize"] }

Colorize string directly by calling colorize() method, like colored crate.

For example: "red".colorize("red") is the same as "[$red]red[$/]"

Note: Chaining is not yet implemented, because .colorize() adds [$/] so you can't chain styles

The argument should be the color's name (the same name as the anchor colors).

use vari::colorize::Colorize;

fn main() {
    println!("{}", "Hello, World".colorize("cyan"));
    println!("{}", "This is red".colorize("brightred"));
    println!("{}", "Bold.".colorize("bold"));
}

Log

[dependencies]
vari = { version =  "0.2.1", features = ["log"] }

Some println-ish function for logging

let log_message = vformat!("[$green]This message is send by main.rs![$/]");
let log_file = vformat!("[$dim]src/main.rs[$/]");
vari::util::log(&log_message, &log_file);

logs

No ANSI for .len()

This is in default features.

This might be used in padding calculation, because in colored string (eg. "\x1b[31mTest\x1b[0m"), the length calculated also contains the "[31m" and the "[0m" in it, making the padding incorrect. So this trait implements a ".no_ansi()" which remove all the ANSI escape sequence and then you could do ".len()" after it.

// vari::util::log()

// Calculate padding amount between the message.
// eg. left________right
let padding_amount = w - right.no_ansi().len() - left.no_ansi().len();
let padding = " ".repeat(padding_amount);
        
let mut result = String::new();

result.push_str(left);
result.push_str(&padding);
result.push_str(right);

return result      

no_ansi()

Fun

[dependencies]
vari = { version =  "0.2.1", features = ["fun"] }
fn main() {
    // Rainbow colors!
    println!("{}", vari::fun::rainbow("Rainbow!!!"));
}

License

This crate is under AGPL-3.0 license.

About

Vari (Väri) is a Rust library for formatting strings with colors and cosmetic stuff to the terminal.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages