blob: 17934b253aee3d148328751f942a4ba6ffaf3ffb [file] [log] [blame] [edit]
use ansi_str::AnsiStr;
use owo_colors::{colors::*, OwoColorize};
pub fn main() {
let text = "
It's funny how life gets complicated
It's funny how life just takes its toll
It's funny howeverythingleads to something
NowI'm back, where I belong
X Ambassadors - Belong
";
let colored_text = colorize_text(text);
for word in colored_text.ansi_split(" ") {
if word.ansi_strip().trim().is_empty() {
continue;
}
println!("{word}");
}
}
fn colorize_text(text: &str) -> String {
let mut buf = Vec::new();
for line in text.lines() {
if line.trim().is_empty() {
continue;
}
buf.push(colorize(line));
}
buf.join("\n")
}
fn colorize(s: &str) -> String {
let mut buf = Vec::new();
for (i, c) in s.chars().enumerate() {
let s = match i {
_ if c == ' ' => c.fg::<Black>().to_string(),
_ if i % 2 == 0 => c.blue().to_string(),
_ if i % 3 == 0 => c.red().to_string(),
_ if i % 5 == 0 => c.yellow().to_string(),
_ => c.cyan().to_string(),
};
let s = match i {
_ if c == ' ' => s.bg::<Black>().to_string(),
_ if i % 2 == 0 => s.bg::<BrightGreen>().to_string(),
_ if i % 3 == 0 => s.bg::<BrightBlack>().to_string(),
_ if i % 5 == 0 => s.bg::<BrightBlue>().to_string(),
_ => s.bg::<BrightMagenta>().to_string(),
};
buf.push(s);
}
buf.join("")
}