diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:18:32 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:18:32 +0000 |
commit | 4547b622d8d29df964fa2914213088b148c498fc (patch) | |
tree | 9fc6b25f3c3add6b745be9a2400a6e96140046e9 /vendor/yansi/src/color.rs | |
parent | Releasing progress-linux version 1.66.0+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-4547b622d8d29df964fa2914213088b148c498fc.tar.xz rustc-4547b622d8d29df964fa2914213088b148c498fc.zip |
Merging upstream version 1.67.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/yansi/src/color.rs')
-rw-r--r-- | vendor/yansi/src/color.rs | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/vendor/yansi/src/color.rs b/vendor/yansi/src/color.rs new file mode 100644 index 000000000..fee620a1d --- /dev/null +++ b/vendor/yansi/src/color.rs @@ -0,0 +1,96 @@ +use std::fmt; + +use {Paint, Style}; + +/// An enum representing an ANSI color code. +#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Copy, Clone)] +pub enum Color { + /// No color has been set. Nothing is changed when applied. + Unset, + + /// Terminal default #9. (foreground code `39`, background code `49`). + Default, + + /// Black #0 (foreground code `30`, background code `40`). + Black, + + /// Red: #1 (foreground code `31`, background code `41`). + Red, + + /// Green: #2 (foreground code `32`, background code `42`). + Green, + + /// Yellow: #3 (foreground code `33`, background code `43`). + Yellow, + + /// Blue: #4 (foreground code `34`, background code `44`). + Blue, + + /// Magenta: #5 (foreground code `35`, background code `45`). + Magenta, + + /// Cyan: #6 (foreground code `36`, background code `46`). + Cyan, + + /// White: #7 (foreground code `37`, background code `47`). + White, + + /// A color number from 0 to 255, for use in 256-color terminals. + Fixed(u8), + + /// A 24-bit RGB color, as specified by ISO-8613-3. + RGB(u8, u8, u8), +} + +impl Color { + /// Constructs a new `Paint` structure that encapsulates `item` with the + /// foreground color set to the color `self`. + /// + /// ```rust + /// use yansi::Color::Blue; + /// + /// println!("This is going to be blue: {}", Blue.paint("yay!")); + /// ``` + #[inline] + pub fn paint<T>(self, item: T) -> Paint<T> { + Paint::new(item).fg(self) + } + + /// Constructs a new `Style` structure with the foreground color set to the + /// color `self`. + /// + /// ```rust + /// use yansi::Color::Green; + /// + /// let success = Green.style().bold(); + /// println!("Hey! {}", success.paint("Success!")); + /// ``` + #[inline] + pub fn style(self) -> Style { + Style::new(self) + } + + pub(crate) fn ascii_fmt(&self, f: &mut fmt::Write) -> fmt::Result { + match *self { + Color::Unset => Ok(()), + Color::Default => write!(f, "9"), + Color::Black => write!(f, "0"), + Color::Red => write!(f, "1"), + Color::Green => write!(f, "2"), + Color::Yellow => write!(f, "3"), + Color::Blue => write!(f, "4"), + Color::Magenta => write!(f, "5"), + Color::Cyan => write!(f, "6"), + Color::White => write!(f, "7"), + Color::Fixed(num) => write!(f, "8;5;{}", num), + Color::RGB(r, g, b) => write!(f, "8;2;{};{};{}", r, g, b), + } + } +} + +impl Default for Color { + #[inline(always)] + fn default() -> Self { + Color::Unset + } +} |