1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
use crate::StyledObject;
use std::fmt::Display;

/// Provides a set of methods to color any type implementing `Display` with attributes.
///
/// This trait is implemented for `&static str` and `StyledObject` and thus the methods of this trait could be called on them.
///
/// ``` rust
/// use Colorizer;
///
/// let styled_text = "Red forground color on blue background.".red().on_blue();
/// println!("{}", styled_text);
/// ```
pub trait Colorize<D: Display> {
    fn black(self) -> StyledObject<D>;
    fn dark_grey(self) -> StyledObject<D>;
    fn red(self) -> StyledObject<D>;
    fn dark_red(self) -> StyledObject<D>;
    fn green(self) -> StyledObject<D>;
    fn dark_green(self) -> StyledObject<D>;
    fn yellow(self) -> StyledObject<D>;
    fn dark_yellow(self) -> StyledObject<D>;
    fn blue(self) -> StyledObject<D>;
    fn dark_blue(self) -> StyledObject<D>;
    fn magenta(self) -> StyledObject<D>;
    fn dark_magenta(self) -> StyledObject<D>;
    fn cyan(self) -> StyledObject<D>;
    fn dark_cyan(self) -> StyledObject<D>;
    fn white(self) -> StyledObject<D>;
    fn grey(self) -> StyledObject<D>;

    fn on_black(self) -> StyledObject<D>;
    fn on_dark_grey(self) -> StyledObject<D>;
    fn on_red(self) -> StyledObject<D>;
    fn on_dark_red(self) -> StyledObject<D>;
    fn on_green(self) -> StyledObject<D>;
    fn on_dark_green(self) -> StyledObject<D>;
    fn on_yellow(self) -> StyledObject<D>;
    fn on_dark_yellow(self) -> StyledObject<D>;
    fn on_blue(self) -> StyledObject<D>;
    fn on_dark_blue(self) -> StyledObject<D>;
    fn on_magenta(self) -> StyledObject<D>;
    fn on_dark_magenta(self) -> StyledObject<D>;
    fn on_cyan(self) -> StyledObject<D>;
    fn on_dark_cyan(self) -> StyledObject<D>;
    fn on_white(self) -> StyledObject<D>;
    fn on_grey(self) -> StyledObject<D>;
}

/// Provides a set of methods to style any type implementing `Display` with attributes.
///
/// This trait is implemented for `&static str` and `StyledObject` and thus the methods of this trait could be called on them.
///
/// # Example
/// ``` rust
/// use Colorizer;
///
/// println!("{}", "Bold text".bold();
/// println!("{}", "Underlined text".underlined();
/// println!("{}", "Negative text".negative();
/// ```
pub trait Styler<D: Display> {
    fn reset(self) -> StyledObject<D>;
    fn bold(self) -> StyledObject<D>;
    fn underlined(self) -> StyledObject<D>;
    fn reverse(self) -> StyledObject<D>;
    fn dim(self) -> StyledObject<D>;
    fn italic(self) -> StyledObject<D>;
    fn negative(self) -> StyledObject<D>;
    fn slow_blink(self) -> StyledObject<D>;
    fn rapid_blink(self) -> StyledObject<D>;
    fn hidden(self) -> StyledObject<D>;
    fn crossed_out(self) -> StyledObject<D>;
}