vibrance 1.0.0

Text colourisation library.
Documentation
use crate::{
    traits::Colourisable,
    strings::ColouredString,
    consts::Formatting
};


/// Generates a function which takes in a `Colourisable`
/// and returns a formatted string.
macro_rules! function {
    ($name:ident,$value:expr) => {
        function!($name(), $value);
    };
    ($name:ident($($arg_name:ident:$arg_type:ty),*),$value:expr) => {
        /// A formatting function.
        pub fn $name<S : Colourisable>(from : S, $($arg_name:$arg_type),*) -> ColouredString {
            from.formatted(vec!($value))
        }
    };
}


/// Text styling functions.
pub mod style {
    use super::*;
    function!(bold          , Formatting::Bold          );
    function!(faint         , Formatting::Faint         );
    function!(italic        , Formatting::Italic        );
    function!(underline     , Formatting::Underline     );
    function!(slow_blink    , Formatting::SlowBlink     );
    function!(fast_blink    , Formatting::FastBlink     );
    function!(invert        , Formatting::Invert        );
    function!(conceal       , Formatting::Conceal       );
    function!(strikethrough , Formatting::Strikethrough );
    function!(overline      , Formatting::Overline      );
    /// Text styling removal functions.
    pub mod reset {
        use super::*;
        function!(intensity     , Formatting::ResetIntensity     );
        function!(italic        , Formatting::ResetItalic        );
        function!(underline     , Formatting::ResetUnderline     );
        function!(slow_blink    , Formatting::ResetSlowBlink     );
        function!(fast_blink    , Formatting::ResetFastBlink     );
        function!(invert        , Formatting::ResetInvert        );
        function!(conceal       , Formatting::ResetConceal       );
        function!(strikethrough , Formatting::ResetStrikethrough );
        function!(overline      , Formatting::ResetOverline      );
    }
}
/// Text foreground setting functions.
pub mod fg {
    use super::*;
    function!(black                   , Formatting::FgBlack         );
    function!(red                     , Formatting::FgRed           );
    function!(green                   , Formatting::FgGreen         );
    function!(yellow                  , Formatting::FgYellow        );
    function!(blue                    , Formatting::FgBlue          );
    function!(magenta                 , Formatting::FgMagenta       );
    function!(cyan                    , Formatting::FgCyan          );
    function!(white                   , Formatting::FgWhite         );
    function!(bright_black            , Formatting::FgBrightBlack   );
    function!(bright_red              , Formatting::FgBrightRed     );
    function!(bright_green            , Formatting::FgBrightGreen   );
    function!(bright_yellow           , Formatting::FgBrightYellow  );
    function!(bright_blue             , Formatting::FgBrightBlue    );
    function!(bright_magenta          , Formatting::FgBrightMagenta );
    function!(bright_cyan             , Formatting::FgBrightCyan    );
    function!(bright_white            , Formatting::FgBrightWhite   );
    function!(cbit_8(n:u8)            , Formatting::Fg8Bit(n)       );
    function!(cbit_24(r:u8,g:u8,b:u8) , Formatting::Fg24Bit(r,g,b)  );
    function!(reset                   , Formatting::FgReset         );
}
/// Text background setting functions.
pub mod bg {
    use super::*;
    function!(black                   , Formatting::BgBlack         );
    function!(red                     , Formatting::BgRed           );
    function!(green                   , Formatting::BgGreen         );
    function!(yellow                  , Formatting::BgYellow        );
    function!(blue                    , Formatting::BgBlue          );
    function!(magenta                 , Formatting::BgMagenta       );
    function!(cyan                    , Formatting::BgCyan          );
    function!(white                   , Formatting::BgWhite         );
    function!(bright_black            , Formatting::BgBrightBlack   );
    function!(bright_red              , Formatting::BgBrightRed     );
    function!(bright_green            , Formatting::BgBrightGreen   );
    function!(bright_yellow           , Formatting::BgBrightYellow  );
    function!(bright_blue             , Formatting::BgBrightBlue    );
    function!(bright_magenta          , Formatting::BgBrightMagenta );
    function!(bright_cyan             , Formatting::BgBrightCyan    );
    function!(bright_white            , Formatting::BgBrightWhite   );
    function!(cbit_8(n:u8)            , Formatting::Bg8Bit(n)       );
    function!(cbit_24(r:u8,g:u8,b:u8) , Formatting::Bg24Bit(r,g,b)  );
    function!(reset                   , Formatting::BgReset         );
}