1use crate::{
2 traits::Colourisable,
3 strings::ColouredString,
4 consts::Formatting
5};
6
7
8macro_rules! function {
11 ($name:ident,$value:expr) => {
12 function!($name(), $value);
13 };
14 ($name:ident($($arg_name:ident:$arg_type:ty),*),$value:expr) => {
15 pub fn $name<S : Colourisable>(from : S, $($arg_name:$arg_type),*) -> ColouredString {
17 from.formatted(vec!($value))
18 }
19 };
20}
21
22
23pub mod style {
25 use super::*;
26 function!(bold , Formatting::Bold );
27 function!(faint , Formatting::Faint );
28 function!(italic , Formatting::Italic );
29 function!(underline , Formatting::Underline );
30 function!(slow_blink , Formatting::SlowBlink );
31 function!(fast_blink , Formatting::FastBlink );
32 function!(invert , Formatting::Invert );
33 function!(conceal , Formatting::Conceal );
34 function!(strikethrough , Formatting::Strikethrough );
35 function!(overline , Formatting::Overline );
36 pub mod reset {
38 use super::*;
39 function!(intensity , Formatting::ResetIntensity );
40 function!(italic , Formatting::ResetItalic );
41 function!(underline , Formatting::ResetUnderline );
42 function!(slow_blink , Formatting::ResetSlowBlink );
43 function!(fast_blink , Formatting::ResetFastBlink );
44 function!(invert , Formatting::ResetInvert );
45 function!(conceal , Formatting::ResetConceal );
46 function!(strikethrough , Formatting::ResetStrikethrough );
47 function!(overline , Formatting::ResetOverline );
48 }
49}
50pub mod fg {
52 use super::*;
53 function!(black , Formatting::FgBlack );
54 function!(red , Formatting::FgRed );
55 function!(green , Formatting::FgGreen );
56 function!(yellow , Formatting::FgYellow );
57 function!(blue , Formatting::FgBlue );
58 function!(magenta , Formatting::FgMagenta );
59 function!(cyan , Formatting::FgCyan );
60 function!(white , Formatting::FgWhite );
61 function!(bright_black , Formatting::FgBrightBlack );
62 function!(bright_red , Formatting::FgBrightRed );
63 function!(bright_green , Formatting::FgBrightGreen );
64 function!(bright_yellow , Formatting::FgBrightYellow );
65 function!(bright_blue , Formatting::FgBrightBlue );
66 function!(bright_magenta , Formatting::FgBrightMagenta );
67 function!(bright_cyan , Formatting::FgBrightCyan );
68 function!(bright_white , Formatting::FgBrightWhite );
69 function!(cbit_8(n:u8) , Formatting::Fg8Bit(n) );
70 function!(cbit_24(r:u8,g:u8,b:u8) , Formatting::Fg24Bit(r,g,b) );
71 function!(reset , Formatting::FgReset );
72}
73pub mod bg {
75 use super::*;
76 function!(black , Formatting::BgBlack );
77 function!(red , Formatting::BgRed );
78 function!(green , Formatting::BgGreen );
79 function!(yellow , Formatting::BgYellow );
80 function!(blue , Formatting::BgBlue );
81 function!(magenta , Formatting::BgMagenta );
82 function!(cyan , Formatting::BgCyan );
83 function!(white , Formatting::BgWhite );
84 function!(bright_black , Formatting::BgBrightBlack );
85 function!(bright_red , Formatting::BgBrightRed );
86 function!(bright_green , Formatting::BgBrightGreen );
87 function!(bright_yellow , Formatting::BgBrightYellow );
88 function!(bright_blue , Formatting::BgBrightBlue );
89 function!(bright_magenta , Formatting::BgBrightMagenta );
90 function!(bright_cyan , Formatting::BgBrightCyan );
91 function!(bright_white , Formatting::BgBrightWhite );
92 function!(cbit_8(n:u8) , Formatting::Bg8Bit(n) );
93 function!(cbit_24(r:u8,g:u8,b:u8) , Formatting::Bg24Bit(r,g,b) );
94 function!(reset , Formatting::BgReset );
95}