pub struct Style {
pub foreground: Option<Color>,
pub background: Option<Color>,
pub condition: Option<Condition>,
/* private fields */
}
Expand description
A set of styling options.
Equivalence and Ordering
Only a style’s foreground
, background
, and set of attributes
are
considered when testing for equivalence or producing an ordering via
PartialEq
or Eq
, and PartialOrd
or Ord
. A style’s quirks and
conditions are ignored.
Fields§
§foreground: Option<Color>
The foreground color. Defaults to None
.
use yansi::{Style, Color};
assert_eq!(Style::new().foreground, None);
assert_eq!(Style::new().green().foreground, Some(Color::Green));
background: Option<Color>
The background color. Defaults to None
.
use yansi::{Style, Color};
assert_eq!(Style::new().background, None);
assert_eq!(Style::new().on_red().background, Some(Color::Red));
condition: Option<Condition>
The condition.
To check a style’s condition directly, use Style::enabled()
:
use yansi::{Style, Condition};
let style = Style::new().whenever(Condition::ALWAYS);
assert!(style.enabled());
let style = Style::new().whenever(Condition::NEVER);
assert!(!style.enabled());
Implementations§
source§impl Style
impl Style
sourcepub const fn new() -> Style
pub const fn new() -> Style
Returns a new style with no foreground or background, no attributes
or quirks, and Condition::DEFAULT
.
This is the default returned by Default::default()
.
Example
use yansi::Style;
assert_eq!(Style::new(), Style::default());
sourcepub fn enabled(&self) -> bool
pub fn enabled(&self) -> bool
Returns true
if this style is enabled, based on
condition
.
Note: For a style to be effected, both this method and
yansi::is_enabled()
must return true
.
When there is no condition set, this method always returns true
. When
a condition has been set, this evaluates the condition and returns the
result.
Example
use yansi::{Style, Condition};
let style = Style::new().whenever(Condition::ALWAYS);
assert!(style.enabled());
let style = Style::new().whenever(Condition::NEVER);
assert!(!style.enabled());
sourcepub fn fmt_prefix(&self, f: &mut dyn Write) -> Result
pub fn fmt_prefix(&self, f: &mut dyn Write) -> Result
Writes the ANSI code prefix for the currently set styles.
This method is intended to be used inside of fmt::Display
and
fmt::Debug
implementations for custom or specialized use-cases. Most
users should use Painted
for all painting needs.
This method writes the ANSI code prefix irrespective of whether painting
is currently enabled or disabled. To write the prefix only if painting
is enabled, condition a call to this method on is_enabled()
.
Example
use core::fmt;
use yansi::Style;
struct CustomItem {
item: u32,
style: Style
}
impl fmt::Display for CustomItem {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.style.fmt_prefix(f)?;
write!(f, "number: {}", self.item)?;
self.style.fmt_suffix(f)
}
}
sourcepub fn prefix(&self) -> Cow<'static, str>
pub fn prefix(&self) -> Cow<'static, str>
Returns the ANSI code sequence prefix for the style as a string.
This returns a string with the exact same sequence written by
fmt_prefix()
. See that method for details.
sourcepub fn fmt_suffix(&self, f: &mut dyn Write) -> Result
pub fn fmt_suffix(&self, f: &mut dyn Write) -> Result
Writes the ANSI code sequence suffix for the style.
This method is intended to be used inside of fmt::Display
and
fmt::Debug
implementations for custom or specialized use-cases. Most
users should use Painted
for all painting needs.
This method writes the ANSI code suffix irrespective of whether painting
is currently enabled or disabled. To write the suffix only if painting
is enabled, condition a call to this method on is_enabled()
.
Example
use core::fmt;
use yansi::Style;
struct CustomItem {
item: u32,
style: Style
}
impl fmt::Display for CustomItem {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.style.fmt_prefix(f)?;
write!(f, "number: {}", self.item)?;
self.style.fmt_suffix(f)
}
}
sourcepub fn suffix(&self) -> Cow<'static, str>
pub fn suffix(&self) -> Cow<'static, str>
Returns the ANSI code sequence suffix for the style as a string.
This returns a string with the exact same sequence written by
fmt_suffix()
. See that method for details.
sourcepub const fn fg(self, value: Color) -> Self
pub const fn fg(self, value: Color) -> Self
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
sourcepub const fn bright_black(self) -> Self
pub const fn bright_black(self) -> Self
sourcepub const fn bright_red(self) -> Self
pub const fn bright_red(self) -> Self
sourcepub const fn bright_green(self) -> Self
pub const fn bright_green(self) -> Self
sourcepub const fn bright_yellow(self) -> Self
pub const fn bright_yellow(self) -> Self
Returns self
with the
fg()
set to
Color::BrightYellow
.
Example
println!("{}", value.bright_yellow());
sourcepub const fn bright_blue(self) -> Self
pub const fn bright_blue(self) -> Self
sourcepub const fn bright_magenta(self) -> Self
pub const fn bright_magenta(self) -> Self
Returns self
with the
fg()
set to
Color::BrightMagenta
.
Example
println!("{}", value.bright_magenta());
sourcepub const fn bright_cyan(self) -> Self
pub const fn bright_cyan(self) -> Self
sourcepub const fn bright_white(self) -> Self
pub const fn bright_white(self) -> Self
sourcepub const fn bg(self, value: Color) -> Self
pub const fn bg(self, value: Color) -> Self
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
sourcepub const fn on_primary(self) -> Self
pub const fn on_primary(self) -> Self
sourcepub const fn on_magenta(self) -> Self
pub const fn on_magenta(self) -> Self
sourcepub const fn on_bright_black(self) -> Self
pub const fn on_bright_black(self) -> Self
Returns self
with the
bg()
set to
Color::BrightBlack
.
Example
println!("{}", value.on_bright_black());
sourcepub const fn on_bright_red(self) -> Self
pub const fn on_bright_red(self) -> Self
sourcepub const fn on_bright_green(self) -> Self
pub const fn on_bright_green(self) -> Self
Returns self
with the
bg()
set to
Color::BrightGreen
.
Example
println!("{}", value.on_bright_green());
sourcepub const fn on_bright_yellow(self) -> Self
pub const fn on_bright_yellow(self) -> Self
Returns self
with the
bg()
set to
Color::BrightYellow
.
Example
println!("{}", value.on_bright_yellow());
sourcepub const fn on_bright_blue(self) -> Self
pub const fn on_bright_blue(self) -> Self
Returns self
with the
bg()
set to
Color::BrightBlue
.
Example
println!("{}", value.on_bright_blue());
sourcepub const fn on_bright_magenta(self) -> Self
pub const fn on_bright_magenta(self) -> Self
Returns self
with the
bg()
set to
Color::BrightMagenta
.
Example
println!("{}", value.on_bright_magenta());
sourcepub const fn on_bright_cyan(self) -> Self
pub const fn on_bright_cyan(self) -> Self
Returns self
with the
bg()
set to
Color::BrightCyan
.
Example
println!("{}", value.on_bright_cyan());
sourcepub const fn on_bright_white(self) -> Self
pub const fn on_bright_white(self) -> Self
Returns self
with the
bg()
set to
Color::BrightWhite
.
Example
println!("{}", value.on_bright_white());
sourcepub const fn attr(self, value: Attribute) -> Self
pub const fn attr(self, value: Attribute) -> Self
Enables the styling Attribute
value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
sourcepub const fn underline(self) -> Self
pub const fn underline(self) -> Self
Returns self
with the
attr()
set to
Attribute::Underline
.
Example
println!("{}", value.underline());
sourcepub const fn rapid_blink(self) -> Self
pub const fn rapid_blink(self) -> Self
Returns self
with the
attr()
set to
Attribute::RapidBlink
.
Example
println!("{}", value.rapid_blink());
sourcepub const fn quirk(self, value: Quirk) -> Self
pub const fn quirk(self, value: Quirk) -> Self
Enables the yansi
Quirk
value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
sourcepub const fn whenever(self, value: Condition) -> Self
pub const fn whenever(self, value: Condition) -> Self
Conditionally enable styling based on whether the Condition
value
applies. Replaces any previous condition.
See the crate level docs for more details.
Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Trait Implementations§
source§impl Ord for Style
impl Ord for Style
source§impl PartialEq<Style> for Style
impl PartialEq<Style> for Style
source§impl PartialOrd<Style> for Style
impl PartialOrd<Style> for Style
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moreimpl Copy for Style
impl Eq for Style
Auto Trait Implementations§
impl RefUnwindSafe for Style
impl Send for Style
impl Sync for Style
impl Unpin for Style
impl UnwindSafe for Style
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere T: ?Sized,
source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightYellow
.
Example
println!("{}", value.bright_yellow());
source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightMagenta
.
Example
println!("{}", value.bright_magenta());
source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightBlack
.
Example
println!("{}", value.on_bright_black());
source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightGreen
.
Example
println!("{}", value.on_bright_green());
source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightYellow
.
Example
println!("{}", value.on_bright_yellow());
source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightBlue
.
Example
println!("{}", value.on_bright_blue());
source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightMagenta
.
Example
println!("{}", value.on_bright_magenta());
source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightCyan
.
Example
println!("{}", value.on_bright_cyan());
source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightWhite
.
Example
println!("{}", value.on_bright_white());
source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute
value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
source§fn underline(&self) -> Painted<&T>
fn underline(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::Underline
.
Example
println!("{}", value.underline());
source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::RapidBlink
.
Example
println!("{}", value.rapid_blink());
source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
Quirk
value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition
value
applies. Replaces any previous condition.
See the crate level docs for more details.
Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);