mellite/colorful

Make your terminal output colorful.

Rust

55

48 commits

updated Jul 31, 2024

See the code

README

Colorful

Build Status Coverage Status Codacy Badge

Usage

Basic Usage

extern crate colorful;

use colorful::Color;
use colorful::Colorful;
//use colorful::HSL;
//use colorful::RGB;

fn main() {
    let s = "Hello world";
    println!("{}", s.color(Color::Blue).bg_color(Color::Yellow).bold());
    //     println!("{}", s.color(HSL::new(1.0, 1.0, 0.5)).italic());
    //     println!("{}", s.color(RGB::new(255, 0, 0)).bold());
    println!("{}", s.blue().bg_yellow());
}

Gradient

extern crate colorful;

use colorful::Color;
use colorful::Colorful;

fn main() {
    println!("{}", "This code is editable and runnable!".gradient(Color::Red));
    println!("{}", "¡Este código es editable y ejecutable!".gradient(Color::Green));
    println!("{}", "Ce code est modifiable et exécutable !".gradient(Color::Yellow));
    println!("{}", "Questo codice è modificabile ed eseguibile!".gradient(Color::Blue));
    println!("{}", "このコードは編集して実行出来ます!".gradient(Color::Magenta));
    println!("{}", "여기에서 코드를 수정하고 실행할 수 있습니다!".gradient(Color::Cyan));
    println!("{}", "Ten kod można edytować oraz uruchomić!".gradient(Color::LightGray));
    println!("{}", "Este código é editável e executável!".gradient(Color::DarkGray));
    println!("{}", "Этот код можно отредактировать и запустить!".gradient(Color::LightRed));
    println!("{}", "Bạn có thể edit và run code trực tiếp!".gradient(Color::LightGreen));
    println!("{}", "这段代码是可以编辑并且能够运行的!".gradient(Color::LightYellow));
    println!("{}", "Dieser Code kann bearbeitet und ausgeführt werden!".gradient(Color::LightBlue));
    println!("{}", "Den här koden kan redigeras och köras!".gradient(Color::LightMagenta));
    println!("{}", "Tento kód můžete upravit a spustit".gradient(Color::LightCyan));
    println!("{}", "این کد قابلیت ویرایش و اجرا دارد!".gradient(Color::White));
    println!("{}", "โค้ดนี้สามารถแก้ไขได้และรันได้".gradient(Color::Grey0));
}

Gradient with style

extern crate colorful;

use colorful::Colorful;

fn main() {
    println!("{}", "言葉にできず 凍えたままで 人前ではやさしく生きていた しわよせで こんなふうに雑に 雨の夜にきみを 抱きしめてた".gradient_with_color(HSL::new(0.0, 1.0, 0.5), HSL::new(0.833, 1.0, 0.5)).underlined());
}

Bar chart

extern crate colorful;

use colorful::Colorful;
use colorful::HSL;

fn main() {
    let s = "█";
    println!("{}\n", "Most Loved, Dreaded, and Wanted Languages".red());
    let values = vec![78.9, 75.1, 68.0, 67.0, 65.6, 65.1, 61.9, 60.4];
    let languages = vec!["Rust", "Kotlin", "Python", "TypeScript", "Go", "Swift", "JavaScript", "C#"];
    let c = languages.iter().max_by_key(|x| x.len()).unwrap();

    for (i, value) in values.iter().enumerate() {
        let h = (*value as f32 * 15.0 % 360.0) / 360.0;
        let length = (value - 30.0) as usize;
        println!("{:<width$} | {} {}%\n", languages.get(i).unwrap(), s.repeat(length).gradient(HSL::new(h, 1.0, 0.5)), value, width = c.len());
    }
}

Output

Animation

Rainbow

extern crate colorful;

use colorful::Colorful;

fn main() {
    let text = format!("{:^50}\n{}\r\n{}", "岳飞 小重山", "昨夜寒蛩不住鸣 惊回千里梦 已三更 起身独自绕阶行 人悄悄 帘外月胧明",
                       "白首为功名 旧山松竹老 阻归程 欲将心事付瑶琴 知音少 弦断有谁听");
    text.rainbow();
}

Output

Neon

extern crate colorful;

use colorful::Colorful;

fn main() {
    let text = format!("{:^28}\n{}", "WARNING", "BIG BROTHER IS WATCHING YOU!!!");
    text.neon(RGB::new(226, 14, 14), RGB::new(158, 158, 158));
    // or you can use text.warn();
}

Output

Terminals compatibility

TerminalFormattingColor
BoldDimUnderlinedBlinkInvertHidden81688256
aTerm ~
Eterm ~ ~
GNOME Terminal
Guake
Konsole
Nautilus Terminal
rxvt ~
Terminator
Tilda
XFCE4 Terminal
XTerm
xvt
Linux TTY ~
VTE Terminal

~: Supported in a special way by the terminal.

Todo

  • Basic 16 color
  • Extra 240 color
  • HSL support
  • RGB support
  • Gradient mode
  • Rainbow mode
  • Animation mode
  • Document
  • Terminals compatibility

License

FOSSA Status

crates
crates-io
rust
rust-library
terminal

mellite/colorful

Make your terminal output colorful.

Rust

55

48 commits

updated Jul 31, 2024

See the code

README

Colorful

Build Status Coverage Status Codacy Badge

Usage

Basic Usage

extern crate colorful;

use colorful::Color;
use colorful::Colorful;
//use colorful::HSL;
//use colorful::RGB;

fn main() {
    let s = "Hello world";
    println!("{}", s.color(Color::Blue).bg_color(Color::Yellow).bold());
    //     println!("{}", s.color(HSL::new(1.0, 1.0, 0.5)).italic());
    //     println!("{}", s.color(RGB::new(255, 0, 0)).bold());
    println!("{}", s.blue().bg_yellow());
}

Gradient

extern crate colorful;

use colorful::Color;
use colorful::Colorful;

fn main() {
    println!("{}", "This code is editable and runnable!".gradient(Color::Red));
    println!("{}", "¡Este código es editable y ejecutable!".gradient(Color::Green));
    println!("{}", "Ce code est modifiable et exécutable !".gradient(Color::Yellow));
    println!("{}", "Questo codice è modificabile ed eseguibile!".gradient(Color::Blue));
    println!("{}", "このコードは編集して実行出来ます!".gradient(Color::Magenta));
    println!("{}", "여기에서 코드를 수정하고 실행할 수 있습니다!".gradient(Color::Cyan));
    println!("{}", "Ten kod można edytować oraz uruchomić!".gradient(Color::LightGray));
    println!("{}", "Este código é editável e executável!".gradient(Color::DarkGray));
    println!("{}", "Этот код можно отредактировать и запустить!".gradient(Color::LightRed));
    println!("{}", "Bạn có thể edit và run code trực tiếp!".gradient(Color::LightGreen));
    println!("{}", "这段代码是可以编辑并且能够运行的!".gradient(Color::LightYellow));
    println!("{}", "Dieser Code kann bearbeitet und ausgeführt werden!".gradient(Color::LightBlue));
    println!("{}", "Den här koden kan redigeras och köras!".gradient(Color::LightMagenta));
    println!("{}", "Tento kód můžete upravit a spustit".gradient(Color::LightCyan));
    println!("{}", "این کد قابلیت ویرایش و اجرا دارد!".gradient(Color::White));
    println!("{}", "โค้ดนี้สามารถแก้ไขได้และรันได้".gradient(Color::Grey0));
}

Gradient with style

extern crate colorful;

use colorful::Colorful;

fn main() {
    println!("{}", "言葉にできず 凍えたままで 人前ではやさしく生きていた しわよせで こんなふうに雑に 雨の夜にきみを 抱きしめてた".gradient_with_color(HSL::new(0.0, 1.0, 0.5), HSL::new(0.833, 1.0, 0.5)).underlined());
}

Bar chart

extern crate colorful;

use colorful::Colorful;
use colorful::HSL;

fn main() {
    let s = "█";
    println!("{}\n", "Most Loved, Dreaded, and Wanted Languages".red());
    let values = vec![78.9, 75.1, 68.0, 67.0, 65.6, 65.1, 61.9, 60.4];
    let languages = vec!["Rust", "Kotlin", "Python", "TypeScript", "Go", "Swift", "JavaScript", "C#"];
    let c = languages.iter().max_by_key(|x| x.len()).unwrap();

    for (i, value) in values.iter().enumerate() {
        let h = (*value as f32 * 15.0 % 360.0) / 360.0;
        let length = (value - 30.0) as usize;
        println!("{:<width$} | {} {}%\n", languages.get(i).unwrap(), s.repeat(length).gradient(HSL::new(h, 1.0, 0.5)), value, width = c.len());
    }
}

Output

Animation

Rainbow

extern crate colorful;

use colorful::Colorful;

fn main() {
    let text = format!("{:^50}\n{}\r\n{}", "岳飞 小重山", "昨夜寒蛩不住鸣 惊回千里梦 已三更 起身独自绕阶行 人悄悄 帘外月胧明",
                       "白首为功名 旧山松竹老 阻归程 欲将心事付瑶琴 知音少 弦断有谁听");
    text.rainbow();
}

Output

Neon

extern crate colorful;

use colorful::Colorful;

fn main() {
    let text = format!("{:^28}\n{}", "WARNING", "BIG BROTHER IS WATCHING YOU!!!");
    text.neon(RGB::new(226, 14, 14), RGB::new(158, 158, 158));
    // or you can use text.warn();
}

Output

Terminals compatibility

TerminalFormattingColor
BoldDimUnderlinedBlinkInvertHidden81688256
aTerm ~
Eterm ~ ~
GNOME Terminal
Guake
Konsole
Nautilus Terminal
rxvt ~
Terminator
Tilda
XFCE4 Terminal
XTerm
xvt
Linux TTY ~
VTE Terminal

~: Supported in a special way by the terminal.

Todo

  • Basic 16 color
  • Extra 240 color
  • HSL support
  • RGB support
  • Gradient mode
  • Rainbow mode
  • Animation mode
  • Document
  • Terminals compatibility

License

FOSSA Status

crates
crates-io
rust
rust-library
terminal

Project health

crates.io

Latest release

0.3.2 · Jul 31, 2024

Releases this year

0

Significant stargazers

Brandon Li

11 followers · starred Nov 2022

a5ob7r

24 followers · starred Jan 2022