rff 0.3.0

rff is a fast, simple fuzzy text selector for the terminal.
Documentation
use std::fmt::{Display, Formatter, Result};

generate_csi_struct!(Reset, "m");

generate_csi_struct!(Bold, "1m");
generate_csi_struct!(Italic, "3m");
generate_csi_struct!(Underline, "4m");
generate_csi_struct!(Invert, "7m");

generate_csi_struct!(NoBold, "21m");
generate_csi_struct!(NoItalic, "23m");
generate_csi_struct!(NoUnderline, "24m");
generate_csi_struct!(NoInvert, "27m");

#[cfg(test)]
mod tests {
    use super::*;

    macro_rules! test_style {
        ($test: ident, $name: ident, $value: expr) => {
            #[test]
            fn $test() {
                let result = format!("{}", $name);
                let expected = concat!("\x1b[", $value);
                assert_eq!(result, expected);
            }
        }
    }

    test_style!(reset, Reset, "m");
    test_style!(bold, Bold, "1m");
    test_style!(italic, Italic, "3m");
    test_style!(underline, Underline, "4m");
    test_style!(invert, Invert, "7m");
    test_style!(no_bold, NoBold, "21m");
    test_style!(no_italic, NoItalic, "23m");
    test_style!(no_underline, NoUnderline, "24m");
    test_style!(no_invert, NoInvert, "27m");
}