summaryrefslogtreecommitdiffstats
path: root/vendor/nu-ansi-term/src/style.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:03 +0000
commit9918693037dce8aa4bb6f08741b6812923486c18 (patch)
tree21d2b40bec7e6a7ea664acee056eb3d08e15a1cf /vendor/nu-ansi-term/src/style.rs
parentReleasing progress-linux version 1.75.0+dfsg1-5~progress7.99u1. (diff)
downloadrustc-9918693037dce8aa4bb6f08741b6812923486c18.tar.xz
rustc-9918693037dce8aa4bb6f08741b6812923486c18.zip
Merging upstream version 1.76.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/nu-ansi-term/src/style.rs')
-rw-r--r--vendor/nu-ansi-term/src/style.rs629
1 files changed, 0 insertions, 629 deletions
diff --git a/vendor/nu-ansi-term/src/style.rs b/vendor/nu-ansi-term/src/style.rs
deleted file mode 100644
index 3d47a79f7..000000000
--- a/vendor/nu-ansi-term/src/style.rs
+++ /dev/null
@@ -1,629 +0,0 @@
-/// A style is a collection of properties that can format a string
-/// using ANSI escape codes.
-///
-/// # Examples
-///
-/// ```
-/// use nu_ansi_term::{Style, Color};
-///
-/// let style = Style::new().bold().on(Color::Black);
-/// println!("{}", style.paint("Bold on black"));
-/// ```
-#[derive(PartialEq, Clone, Copy)]
-#[cfg_attr(
- feature = "derive_serde_style",
- derive(serde::Deserialize, serde::Serialize)
-)]
-pub struct Style {
- /// The style's foreground color, if it has one.
- pub foreground: Option<Color>,
-
- /// The style's background color, if it has one.
- pub background: Option<Color>,
-
- /// Whether this style is bold.
- pub is_bold: bool,
-
- /// Whether this style is dimmed.
- pub is_dimmed: bool,
-
- /// Whether this style is italic.
- pub is_italic: bool,
-
- /// Whether this style is underlined.
- pub is_underline: bool,
-
- /// Whether this style is blinking.
- pub is_blink: bool,
-
- /// Whether this style has reverse colors.
- pub is_reverse: bool,
-
- /// Whether this style is hidden.
- pub is_hidden: bool,
-
- /// Whether this style is struckthrough.
- pub is_strikethrough: bool,
-}
-
-impl Style {
- /// Creates a new Style with no properties set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Style;
- ///
- /// let style = Style::new();
- /// println!("{}", style.paint("hi"));
- /// ```
- pub fn new() -> Style {
- Style::default()
- }
-
- /// Returns a `Style` with the bold property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Style;
- ///
- /// let style = Style::new().bold();
- /// println!("{}", style.paint("hey"));
- /// ```
- pub fn bold(&self) -> Style {
- Style {
- is_bold: true,
- ..*self
- }
- }
-
- /// Returns a `Style` with the dimmed property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Style;
- ///
- /// let style = Style::new().dimmed();
- /// println!("{}", style.paint("sup"));
- /// ```
- pub fn dimmed(&self) -> Style {
- Style {
- is_dimmed: true,
- ..*self
- }
- }
-
- /// Returns a `Style` with the italic property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Style;
- ///
- /// let style = Style::new().italic();
- /// println!("{}", style.paint("greetings"));
- /// ```
- pub fn italic(&self) -> Style {
- Style {
- is_italic: true,
- ..*self
- }
- }
-
- /// Returns a `Style` with the underline property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Style;
- ///
- /// let style = Style::new().underline();
- /// println!("{}", style.paint("salutations"));
- /// ```
- pub fn underline(&self) -> Style {
- Style {
- is_underline: true,
- ..*self
- }
- }
-
- /// Returns a `Style` with the blink property set.
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Style;
- ///
- /// let style = Style::new().blink();
- /// println!("{}", style.paint("wazzup"));
- /// ```
- pub fn blink(&self) -> Style {
- Style {
- is_blink: true,
- ..*self
- }
- }
-
- /// Returns a `Style` with the reverse property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Style;
- ///
- /// let style = Style::new().reverse();
- /// println!("{}", style.paint("aloha"));
- /// ```
- pub fn reverse(&self) -> Style {
- Style {
- is_reverse: true,
- ..*self
- }
- }
-
- /// Returns a `Style` with the hidden property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Style;
- ///
- /// let style = Style::new().hidden();
- /// println!("{}", style.paint("ahoy"));
- /// ```
- pub fn hidden(&self) -> Style {
- Style {
- is_hidden: true,
- ..*self
- }
- }
-
- /// Returns a `Style` with the strikethrough property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Style;
- ///
- /// let style = Style::new().strikethrough();
- /// println!("{}", style.paint("yo"));
- /// ```
- pub fn strikethrough(&self) -> Style {
- Style {
- is_strikethrough: true,
- ..*self
- }
- }
-
- /// Returns a `Style` with the foreground color property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::{Style, Color};
- ///
- /// let style = Style::new().fg(Color::Yellow);
- /// println!("{}", style.paint("hi"));
- /// ```
- pub fn fg(&self, foreground: Color) -> Style {
- Style {
- foreground: Some(foreground),
- ..*self
- }
- }
-
- /// Returns a `Style` with the background color property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::{Style, Color};
- ///
- /// let style = Style::new().on(Color::Blue);
- /// println!("{}", style.paint("eyyyy"));
- /// ```
- pub fn on(&self, background: Color) -> Style {
- Style {
- background: Some(background),
- ..*self
- }
- }
-
- /// Return true if this `Style` has no actual styles, and can be written
- /// without any control characters.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Style;
- ///
- /// assert_eq!(true, Style::default().is_plain());
- /// assert_eq!(false, Style::default().bold().is_plain());
- /// ```
- pub fn is_plain(self) -> bool {
- self == Style::default()
- }
-}
-
-impl Default for Style {
- /// Returns a style with *no* properties set. Formatting text using this
- /// style returns the exact same text.
- ///
- /// ```
- /// use nu_ansi_term::Style;
- /// assert_eq!(None, Style::default().foreground);
- /// assert_eq!(None, Style::default().background);
- /// assert_eq!(false, Style::default().is_bold);
- /// assert_eq!("txt", Style::default().paint("txt").to_string());
- /// ```
- fn default() -> Style {
- Style {
- foreground: None,
- background: None,
- is_bold: false,
- is_dimmed: false,
- is_italic: false,
- is_underline: false,
- is_blink: false,
- is_reverse: false,
- is_hidden: false,
- is_strikethrough: false,
- }
- }
-}
-
-// ---- colors ----
-
-/// A color is one specific type of ANSI escape code, and can refer
-/// to either the foreground or background color.
-///
-/// These use the standard numeric sequences.
-/// See <http://invisible-island.net/xterm/ctlseqs/ctlseqs.html>
-#[derive(PartialEq, Clone, Copy, Debug)]
-#[cfg_attr(
- feature = "derive_serde_style",
- derive(serde::Deserialize, serde::Serialize)
-)]
-pub enum Color {
- /// Color #0 (foreground code `30`, background code `40`).
- ///
- /// This is not necessarily the background color, and using it as one may
- /// render the text hard to read on terminals with dark backgrounds.
- Black,
-
- /// Color #0 (foreground code `90`, background code `100`).
- DarkGray,
-
- /// Color #1 (foreground code `31`, background code `41`).
- Red,
-
- /// Color #1 (foreground code `91`, background code `101`).
- LightRed,
-
- /// Color #2 (foreground code `32`, background code `42`).
- Green,
-
- /// Color #2 (foreground code `92`, background code `102`).
- LightGreen,
-
- /// Color #3 (foreground code `33`, background code `43`).
- Yellow,
-
- /// Color #3 (foreground code `93`, background code `103`).
- LightYellow,
-
- /// Color #4 (foreground code `34`, background code `44`).
- Blue,
-
- /// Color #4 (foreground code `94`, background code `104`).
- LightBlue,
-
- /// Color #5 (foreground code `35`, background code `45`).
- Purple,
-
- /// Color #5 (foreground code `95`, background code `105`).
- LightPurple,
-
- /// Color #5 (foreground code `35`, background code `45`).
- Magenta,
-
- /// Color #5 (foreground code `95`, background code `105`).
- LightMagenta,
-
- /// Color #6 (foreground code `36`, background code `46`).
- Cyan,
-
- /// Color #6 (foreground code `96`, background code `106`).
- LightCyan,
-
- /// Color #7 (foreground code `37`, background code `47`).
- ///
- /// As above, this is not necessarily the foreground color, and may be
- /// hard to read on terminals with light backgrounds.
- White,
-
- /// Color #7 (foreground code `97`, background code `107`).
- LightGray,
-
- /// A color number from 0 to 255, for use in 256-color terminal
- /// environments.
- ///
- /// - colors 0 to 7 are the `Black` to `White` variants respectively.
- /// These colors can usually be changed in the terminal emulator.
- /// - colors 8 to 15 are brighter versions of the eight colors above.
- /// These can also usually be changed in the terminal emulator, or it
- /// could be configured to use the original colors and show the text in
- /// bold instead. It varies depending on the program.
- /// - colors 16 to 231 contain several palettes of bright colors,
- /// arranged in six squares measuring six by six each.
- /// - colors 232 to 255 are shades of grey from black to white.
- ///
- /// It might make more sense to look at a [color chart][cc].
- ///
- /// [cc]: https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg
- Fixed(u8),
-
- /// A 24-bit Rgb color, as specified by ISO-8613-3.
- Rgb(u8, u8, u8),
-
- /// The default color (foreground code `39`, background codr `49`).
- Default,
-}
-
-impl Default for Color {
- fn default() -> Self {
- Color::White
- }
-}
-
-impl Color {
- /// Returns a `Style` with the foreground color set to this color.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Color;
- ///
- /// let style = Color::Red.normal();
- /// println!("{}", style.paint("hi"));
- /// ```
- pub fn normal(self) -> Style {
- Style {
- foreground: Some(self),
- ..Style::default()
- }
- }
-
- /// Returns a `Style` with the foreground color set to this color and the
- /// bold property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Color;
- ///
- /// let style = Color::Green.bold();
- /// println!("{}", style.paint("hey"));
- /// ```
- pub fn bold(self) -> Style {
- Style {
- foreground: Some(self),
- is_bold: true,
- ..Style::default()
- }
- }
-
- /// Returns a `Style` with the foreground color set to this color and the
- /// dimmed property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Color;
- ///
- /// let style = Color::Yellow.dimmed();
- /// println!("{}", style.paint("sup"));
- /// ```
- pub fn dimmed(self) -> Style {
- Style {
- foreground: Some(self),
- is_dimmed: true,
- ..Style::default()
- }
- }
-
- /// Returns a `Style` with the foreground color set to this color and the
- /// italic property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Color;
- ///
- /// let style = Color::Blue.italic();
- /// println!("{}", style.paint("greetings"));
- /// ```
- pub fn italic(self) -> Style {
- Style {
- foreground: Some(self),
- is_italic: true,
- ..Style::default()
- }
- }
-
- /// Returns a `Style` with the foreground color set to this color and the
- /// underline property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Color;
- ///
- /// let style = Color::Purple.underline();
- /// println!("{}", style.paint("salutations"));
- /// ```
- pub fn underline(self) -> Style {
- Style {
- foreground: Some(self),
- is_underline: true,
- ..Style::default()
- }
- }
-
- /// Returns a `Style` with the foreground color set to this color and the
- /// blink property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Color;
- ///
- /// let style = Color::Cyan.blink();
- /// println!("{}", style.paint("wazzup"));
- /// ```
- pub fn blink(self) -> Style {
- Style {
- foreground: Some(self),
- is_blink: true,
- ..Style::default()
- }
- }
-
- /// Returns a `Style` with the foreground color set to this color and the
- /// reverse property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Color;
- ///
- /// let style = Color::Black.reverse();
- /// println!("{}", style.paint("aloha"));
- /// ```
- pub fn reverse(self) -> Style {
- Style {
- foreground: Some(self),
- is_reverse: true,
- ..Style::default()
- }
- }
-
- /// Returns a `Style` with the foreground color set to this color and the
- /// hidden property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Color;
- ///
- /// let style = Color::White.hidden();
- /// println!("{}", style.paint("ahoy"));
- /// ```
- pub fn hidden(self) -> Style {
- Style {
- foreground: Some(self),
- is_hidden: true,
- ..Style::default()
- }
- }
-
- /// Returns a `Style` with the foreground color set to this color and the
- /// strikethrough property set.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Color;
- ///
- /// let style = Color::Fixed(244).strikethrough();
- /// println!("{}", style.paint("yo"));
- /// ```
- pub fn strikethrough(self) -> Style {
- Style {
- foreground: Some(self),
- is_strikethrough: true,
- ..Style::default()
- }
- }
-
- /// Returns a `Style` with the foreground color set to this color and the
- /// background color property set to the given color.
- ///
- /// # Examples
- ///
- /// ```
- /// use nu_ansi_term::Color;
- ///
- /// let style = Color::Rgb(31, 31, 31).on(Color::White);
- /// println!("{}", style.paint("eyyyy"));
- /// ```
- pub fn on(self, background: Color) -> Style {
- Style {
- foreground: Some(self),
- background: Some(background),
- ..Style::default()
- }
- }
-}
-
-impl From<Color> for Style {
- /// You can turn a `Color` into a `Style` with the foreground color set
- /// with the `From` trait.
- ///
- /// ```
- /// use nu_ansi_term::{Style, Color};
- /// let green_foreground = Style::default().fg(Color::Green);
- /// assert_eq!(green_foreground, Color::Green.normal());
- /// assert_eq!(green_foreground, Color::Green.into());
- /// assert_eq!(green_foreground, Style::from(Color::Green));
- /// ```
- fn from(color: Color) -> Style {
- color.normal()
- }
-}
-
-#[cfg(test)]
-#[cfg(feature = "derive_serde_style")]
-mod serde_json_tests {
- use super::{Color, Style};
-
- #[test]
- fn color_serialization() {
- let colors = &[
- Color::Red,
- Color::Blue,
- Color::Rgb(123, 123, 123),
- Color::Fixed(255),
- ];
-
- assert_eq!(
- serde_json::to_string(&colors).unwrap(),
- String::from("[\"Red\",\"Blue\",{\"Rgb\":[123,123,123]},{\"Fixed\":255}]")
- );
- }
-
- #[test]
- fn color_deserialization() {
- let colors = [
- Color::Red,
- Color::Blue,
- Color::Rgb(123, 123, 123),
- Color::Fixed(255),
- ];
-
- for color in colors {
- let serialized = serde_json::to_string(&color).unwrap();
- let deserialized: Color = serde_json::from_str(&serialized).unwrap();
-
- assert_eq!(color, deserialized);
- }
- }
-
- #[test]
- fn style_serialization() {
- let style = Style::default();
-
- assert_eq!(serde_json::to_string(&style).unwrap(), "{\"foreground\":null,\"background\":null,\"is_bold\":false,\"is_dimmed\":false,\"is_italic\":false,\"is_underline\":false,\"is_blink\":false,\"is_reverse\":false,\"is_hidden\":false,\"is_strikethrough\":false}".to_string());
- }
-}