Skip to main content

minimo/
macros.rs

1use super::*;
2
3/// # hex! macro
4/// to convert hex color to ansi color
5/// example: hex!(#0099FF) -> "\x1b[38;2;0;99;255m"
6#[macro_export]
7macro_rules! hex {
8($hex:expr) => {
9    {
10        let hex = $hex.trim_start_matches("#");
11        let r = u8::from_str_radix(&hex[0..2], 16).unwrap();
12        let g = u8::from_str_radix(&hex[2..4], 16).unwrap();
13        let b = u8::from_str_radix(&hex[4..6], 16).unwrap();
14        format!("\x1b[38;2;{};{};{}m", r, g, b)
15    }
16};
17}
18
19///hexbg! macro to convert hex color to ansi background color
20/// example: hexbg!(#0099FF) -> "\x1b[48;2;0;99;255m\x1b[30m"
21/// example: hexbg!(#0099FF, 255) -> "\x1b[48;2;0;99;255m\x1b[30m"
22/// example: hexbg!(#0099FF, 255, 255, 255) -> "\x1b[48;2;0;99;255m\x1b[30m"
23#[macro_export]
24macro_rules! hexbg {
25($hex:expr) => {
26    {
27        let hex = $hex.trim_start_matches("#");
28        let r = u8::from_str_radix(&hex[0..2], 16).unwrap();
29        let g = u8::from_str_radix(&hex[2..4], 16).unwrap();
30        let b = u8::from_str_radix(&hex[4..6], 16).unwrap();
31        format!("\x1b[48;2;{};{};{}m\x1b[30m", r, g, b)
32    }
33};
34($hex:expr, $r:expr) => {
35    {
36        let hex = $hex.trim_start_matches("#");
37        let r = u8::from_str_radix(&hex[0..2], 16).unwrap();
38        let g = u8::from_str_radix(&hex[2..4], 16).unwrap();
39        let b = u8::from_str_radix(&hex[4..6], 16).unwrap();
40        format!("\x1b[48;2;{};{};{}m\x1b[30m", r, g, b)
41    }
42};
43($hex:expr, $r:expr, $g:expr, $b:expr) => {
44    {
45        let hex = $hex.trim_start_matches("#");
46        let r = u8::from_str_radix(&hex[0..2], 16).unwrap();
47        let g = u8::from_str_radix(&hex[2..4], 16).unwrap();
48        let b = u8::from_str_radix(&hex[4..6], 16).unwrap();
49        format!("\x1b[48;2;{};{};{}m\x1b[30m", r, g, b)
50    }
51};
52}