#[repr(packed(1))]pub struct Style { /* private fields */ }
Expand description
Represents a set of styling options.
See the crate level documentation for usage information.
§Method Glossary
The Style
structure exposes many methods for convenience. The majority of
these methods are shared with Paint
.
§Foreground Color Constructors
Return a new Style
structure with a foreground color
applied.
§Setters
Set a style property on a given Style
structure.
style.fg(color: Color)
style.bg(color: Color)
style.mask()
style.wrap()
style.bold()
style.dimmed()
style.italic()
style.underline()
style.blink()
style.invert()
style.hidden()
style.strikethrough()
These methods can be chained:
use yansi::{Style, Color::{Red, Magenta}};
Style::new(Red).bg(Magenta).underline().invert().italic().dimmed().bold();
§Converters
Convert a Style
into another structure.
§Getters
Return information about a Style
structure.
style.fg_color()
style.bg_color()
style.is_masked()
style.is_wrapping()
style.is_bold()
style.is_dimmed()
style.is_italic()
style.is_underline()
style.is_blink()
style.is_invert()
style.is_hidden()
style.is_strikethrough()
§Raw Formatters
Write the raw ANSI codes for a given Style
to any fmt::Write
.
Implementations§
source§impl Style
impl Style
sourcepub fn new(color: Color) -> Style
pub fn new(color: Color) -> Style
Default style with the foreground set to color
and no other set
properties.
use yansi::Style;
let plain = Style::default();
assert_eq!(plain, Style::default());
sourcepub fn fg(self, color: Color) -> Style
pub fn fg(self, color: Color) -> Style
Sets the foreground to color
.
use yansi::{Color, Style};
let red_fg = Style::default().fg(Color::Red);
sourcepub fn bg(self, color: Color) -> Style
pub fn bg(self, color: Color) -> Style
Sets the background to color
.
use yansi::{Color, Style};
let red_bg = Style::default().bg(Color::Red);
sourcepub fn mask(self) -> Style
pub fn mask(self) -> Style
Sets self
to be masked.
An item with masked styling is not written out when painting is
disabled during Display
or Debug
invocations. When painting is
enabled, masking has no effect.
use yansi::Style;
let masked = Style::default().mask();
// "Whoops! " will only print when coloring is enabled.
println!("{}Something happened.", masked.paint("Whoops! "));
sourcepub fn wrap(self) -> Style
pub fn wrap(self) -> Style
Sets self
to be wrapping.
A wrapping Style
converts all color resets written out by the internal
value to the styling of itself. This allows for seamless color wrapping
of other colored text.
§Performance
In order to wrap an internal value, the internal value must first be written out to a local buffer and examined. As a result, displaying a wrapped value is likely to result in a heap allocation and copy.
use yansi::{Paint, Style, Color};
let inner = format!("{} and {}", Paint::red("Stop"), Paint::green("Go"));
let wrapping = Style::new(Color::Blue).wrap();
// 'Hey!' will be unstyled, "Stop" will be red, "and" will be blue, and
// "Go" will be green. Without a wrapping `Paint`, "and" would be
// unstyled.
println!("Hey! {}", wrapping.paint(inner));
sourcepub fn bold(self) -> Style
pub fn bold(self) -> Style
Enables the bold style on self
.
use yansi::Paint;
println!("Using bold: {}", Paint::new("hi").bold());
sourcepub fn dimmed(self) -> Style
pub fn dimmed(self) -> Style
Enables the dimmed style on self
.
use yansi::Paint;
println!("Using dimmed: {}", Paint::new("hi").dimmed());
sourcepub fn italic(self) -> Style
pub fn italic(self) -> Style
Enables the italic style on self
.
use yansi::Paint;
println!("Using italic: {}", Paint::new("hi").italic());
sourcepub fn underline(self) -> Style
pub fn underline(self) -> Style
Enables the underline style on self
.
use yansi::Paint;
println!("Using underline: {}", Paint::new("hi").underline());
sourcepub fn blink(self) -> Style
pub fn blink(self) -> Style
Enables the blink style on self
.
use yansi::Paint;
println!("Using blink: {}", Paint::new("hi").blink());
sourcepub fn invert(self) -> Style
pub fn invert(self) -> Style
Enables the invert style on self
.
use yansi::Paint;
println!("Using invert: {}", Paint::new("hi").invert());
Enables the hidden style on self
.
use yansi::Paint;
println!("Using hidden: {}", Paint::new("hi").hidden());
sourcepub fn strikethrough(self) -> Style
pub fn strikethrough(self) -> Style
Enables the strikethrough style on self
.
use yansi::Paint;
println!("Using strikethrough: {}", Paint::new("hi").strikethrough());
sourcepub fn paint<T>(self, item: T) -> Paint<T>
pub fn paint<T>(self, item: T) -> Paint<T>
Constructs a new Paint
structure that encapsulates item
with the
style set to self
.
use yansi::{Style, Color};
let alert = Style::new(Color::Red).bold().underline();
println!("Alert: {}", alert.paint("This thing happened!"));
sourcepub fn fg_color(&self) -> Color
pub fn fg_color(&self) -> Color
Returns the foreground color of self
.
use yansi::{Style, Color};
let plain = Style::default();
assert_eq!(plain.fg_color(), Color::Unset);
let red = plain.fg(Color::Red);
assert_eq!(red.fg_color(), Color::Red);
sourcepub fn bg_color(&self) -> Color
pub fn bg_color(&self) -> Color
Returns the foreground color of self
.
use yansi::{Style, Color};
let plain = Style::default();
assert_eq!(plain.bg_color(), Color::Unset);
let white = plain.bg(Color::White);
assert_eq!(white.bg_color(), Color::White);
sourcepub fn is_masked(&self) -> bool
pub fn is_masked(&self) -> bool
Returns true
if self
is masked.
use yansi::Style;
let plain = Style::default();
assert!(!plain.is_masked());
let masked = plain.mask();
assert!(masked.is_masked());
sourcepub fn is_wrapping(&self) -> bool
pub fn is_wrapping(&self) -> bool
Returns true
if self
is wrapping.
use yansi::Style;
let plain = Style::default();
assert!(!plain.is_wrapping());
let wrapping = plain.wrap();
assert!(wrapping.is_wrapping());
sourcepub fn is_bold(&self) -> bool
pub fn is_bold(&self) -> bool
Returns true
if the bold property is set on self
.
use yansi::Style;
let plain = Style::default();
assert!(!plain.is_bold());
let styled = plain.bold();
assert!(styled.is_bold());
sourcepub fn is_dimmed(&self) -> bool
pub fn is_dimmed(&self) -> bool
Returns true
if the dimmed property is set on self
.
use yansi::Style;
let plain = Style::default();
assert!(!plain.is_dimmed());
let styled = plain.dimmed();
assert!(styled.is_dimmed());
sourcepub fn is_italic(&self) -> bool
pub fn is_italic(&self) -> bool
Returns true
if the italic property is set on self
.
use yansi::Style;
let plain = Style::default();
assert!(!plain.is_italic());
let styled = plain.italic();
assert!(styled.is_italic());
sourcepub fn is_underline(&self) -> bool
pub fn is_underline(&self) -> bool
Returns true
if the underline property is set on self
.
use yansi::Style;
let plain = Style::default();
assert!(!plain.is_underline());
let styled = plain.underline();
assert!(styled.is_underline());
sourcepub fn is_blink(&self) -> bool
pub fn is_blink(&self) -> bool
Returns true
if the blink property is set on self
.
use yansi::Style;
let plain = Style::default();
assert!(!plain.is_blink());
let styled = plain.blink();
assert!(styled.is_blink());
sourcepub fn is_invert(&self) -> bool
pub fn is_invert(&self) -> bool
Returns true
if the invert property is set on self
.
use yansi::Style;
let plain = Style::default();
assert!(!plain.is_invert());
let styled = plain.invert();
assert!(styled.is_invert());
Returns true
if the hidden property is set on self
.
use yansi::Style;
let plain = Style::default();
assert!(!plain.is_hidden());
let styled = plain.hidden();
assert!(styled.is_hidden());
sourcepub fn is_strikethrough(&self) -> bool
pub fn is_strikethrough(&self) -> bool
Returns true
if the strikethrough property is set on self
.
use yansi::Style;
let plain = Style::default();
assert!(!plain.is_strikethrough());
let styled = plain.strikethrough();
assert!(styled.is_strikethrough());
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 Paint
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 Paint::is_enabled()
.
§Example
use std::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 fmt_suffix(&self, f: &mut dyn Write) -> Result
pub fn fmt_suffix(&self, f: &mut dyn Write) -> Result
Writes the ANSI code suffix 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 Paint
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 Paint::is_enabled()
.
§Example
use std::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)
}
}
Trait Implementations§
source§impl Ord for Style
impl Ord for Style
source§impl PartialEq for Style
impl PartialEq for Style
source§impl PartialOrd for Style
impl PartialOrd 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 more