aboutsummaryrefslogtreecommitdiff
path: root/vendor/owo-colors/src/styles.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/owo-colors/src/styles.rs')
-rw-r--r--vendor/owo-colors/src/styles.rs174
1 files changed, 174 insertions, 0 deletions
diff --git a/vendor/owo-colors/src/styles.rs b/vendor/owo-colors/src/styles.rs
new file mode 100644
index 0000000..f4f036a
--- /dev/null
+++ b/vendor/owo-colors/src/styles.rs
@@ -0,0 +1,174 @@
+//! Different display styles (strikethrough, bold, etc.)
+use core::fmt;
+
+#[allow(unused_imports)]
+use crate::OwoColorize;
+
+macro_rules! impl_fmt_for_style {
+ ($(($ty:ident, $trait:path, $ansi:literal)),* $(,)?) => {
+ $(
+ impl<'a, T: $trait> $trait for $ty<'a, T> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str($ansi)?;
+ <_ as $trait>::fmt(&self.0, f)?;
+ f.write_str("\x1b[0m")
+ }
+ }
+ )*
+ };
+}
+
+/// Transparent wrapper around a type which implements all the formatters the wrapped type does,
+/// with the addition of boldening it. Recommended to be constructed using
+/// [`OwoColorize`](OwoColorize::bold).
+#[repr(transparent)]
+pub struct BoldDisplay<'a, T>(pub &'a T);
+
+/// Transparent wrapper around a type which implements all the formatters the wrapped type does,
+/// with the addition of dimming it. Recommended to be constructed using
+/// [`OwoColorize`](OwoColorize::dimmed).
+#[repr(transparent)]
+pub struct DimDisplay<'a, T>(pub &'a T);
+
+/// Transparent wrapper around a type which implements all the formatters the wrapped type does,
+/// with the addition of italicizing it. Recommended to be constructed using
+/// [`OwoColorize`](OwoColorize::italic).
+#[repr(transparent)]
+pub struct ItalicDisplay<'a, T>(pub &'a T);
+
+/// Transparent wrapper around a type which implements all the formatters the wrapped type does,
+/// with the addition of underlining it. Recommended to be constructed using
+/// [`OwoColorize`](OwoColorize::underline).
+#[repr(transparent)]
+pub struct UnderlineDisplay<'a, T>(pub &'a T);
+
+/// Transparent wrapper around a type which implements all the formatters the wrapped type does,
+/// with the addition of making it blink. Recommended to be constructed using
+/// [`OwoColorize`](OwoColorize::blink).
+#[repr(transparent)]
+pub struct BlinkDisplay<'a, T>(pub &'a T);
+
+/// Transparent wrapper around a type which implements all the formatters the wrapped type does,
+/// with the addition of making it blink fast. Recommended to be constructed using
+/// [`OwoColorize`](OwoColorize::blink_fast).
+#[repr(transparent)]
+pub struct BlinkFastDisplay<'a, T>(pub &'a T);
+
+/// Transparent wrapper around a type which implements all the formatters the wrapped type does,
+/// with the addition of swapping foreground and background colors. Recommended to be constructed
+/// using [`OwoColorize`](OwoColorize::reversed).
+#[repr(transparent)]
+pub struct ReversedDisplay<'a, T>(pub &'a T);
+
+/// Transparent wrapper around a type which implements all the formatters the wrapped type does,
+/// with the addition of hiding the text. Recommended to be constructed
+/// using [`OwoColorize`](OwoColorize::reversed).
+#[repr(transparent)]
+pub struct HiddenDisplay<'a, T>(pub &'a T);
+
+/// Transparent wrapper around a type which implements all the formatters the wrapped type does,
+/// with the addition of crossing out the given text. Recommended to be constructed using
+/// [`OwoColorize`](OwoColorize::strikethrough).
+#[repr(transparent)]
+pub struct StrikeThroughDisplay<'a, T>(pub &'a T);
+
+impl_fmt_for_style! {
+ // Bold
+ (BoldDisplay, fmt::Display, "\x1b[1m"),
+ (BoldDisplay, fmt::Debug, "\x1b[1m"),
+ (BoldDisplay, fmt::UpperHex, "\x1b[1m"),
+ (BoldDisplay, fmt::LowerHex, "\x1b[1m"),
+ (BoldDisplay, fmt::Binary, "\x1b[1m"),
+ (BoldDisplay, fmt::UpperExp, "\x1b[1m"),
+ (BoldDisplay, fmt::LowerExp, "\x1b[1m"),
+ (BoldDisplay, fmt::Octal, "\x1b[1m"),
+ (BoldDisplay, fmt::Pointer, "\x1b[1m"),
+
+ // Dim
+ (DimDisplay, fmt::Display, "\x1b[2m"),
+ (DimDisplay, fmt::Debug, "\x1b[2m"),
+ (DimDisplay, fmt::UpperHex, "\x1b[2m"),
+ (DimDisplay, fmt::LowerHex, "\x1b[2m"),
+ (DimDisplay, fmt::Binary, "\x1b[2m"),
+ (DimDisplay, fmt::UpperExp, "\x1b[2m"),
+ (DimDisplay, fmt::LowerExp, "\x1b[2m"),
+ (DimDisplay, fmt::Octal, "\x1b[2m"),
+ (DimDisplay, fmt::Pointer, "\x1b[2m"),
+
+ // Italic
+ (ItalicDisplay, fmt::Display, "\x1b[3m"),
+ (ItalicDisplay, fmt::Debug, "\x1b[3m"),
+ (ItalicDisplay, fmt::UpperHex, "\x1b[3m"),
+ (ItalicDisplay, fmt::LowerHex, "\x1b[3m"),
+ (ItalicDisplay, fmt::Binary, "\x1b[3m"),
+ (ItalicDisplay, fmt::UpperExp, "\x1b[3m"),
+ (ItalicDisplay, fmt::LowerExp, "\x1b[3m"),
+ (ItalicDisplay, fmt::Octal, "\x1b[3m"),
+ (ItalicDisplay, fmt::Pointer, "\x1b[3m"),
+
+ // Underline
+ (UnderlineDisplay, fmt::Display, "\x1b[4m"),
+ (UnderlineDisplay, fmt::Debug, "\x1b[4m"),
+ (UnderlineDisplay, fmt::UpperHex, "\x1b[4m"),
+ (UnderlineDisplay, fmt::LowerHex, "\x1b[4m"),
+ (UnderlineDisplay, fmt::Binary, "\x1b[4m"),
+ (UnderlineDisplay, fmt::UpperExp, "\x1b[4m"),
+ (UnderlineDisplay, fmt::LowerExp, "\x1b[4m"),
+ (UnderlineDisplay, fmt::Octal, "\x1b[4m"),
+ (UnderlineDisplay, fmt::Pointer, "\x1b[4m"),
+
+ // Blink
+ (BlinkDisplay, fmt::Display, "\x1b[5m"),
+ (BlinkDisplay, fmt::Debug, "\x1b[5m"),
+ (BlinkDisplay, fmt::UpperHex, "\x1b[5m"),
+ (BlinkDisplay, fmt::LowerHex, "\x1b[5m"),
+ (BlinkDisplay, fmt::Binary, "\x1b[5m"),
+ (BlinkDisplay, fmt::UpperExp, "\x1b[5m"),
+ (BlinkDisplay, fmt::LowerExp, "\x1b[5m"),
+ (BlinkDisplay, fmt::Octal, "\x1b[5m"),
+ (BlinkDisplay, fmt::Pointer, "\x1b[5m"),
+
+ // Blink fast
+ (BlinkFastDisplay, fmt::Display, "\x1b[6m"),
+ (BlinkFastDisplay, fmt::Debug, "\x1b[6m"),
+ (BlinkFastDisplay, fmt::UpperHex, "\x1b[6m"),
+ (BlinkFastDisplay, fmt::LowerHex, "\x1b[6m"),
+ (BlinkFastDisplay, fmt::Binary, "\x1b[6m"),
+ (BlinkFastDisplay, fmt::UpperExp, "\x1b[6m"),
+ (BlinkFastDisplay, fmt::LowerExp, "\x1b[6m"),
+ (BlinkFastDisplay, fmt::Octal, "\x1b[6m"),
+ (BlinkFastDisplay, fmt::Pointer, "\x1b[6m"),
+
+ // Reverse video
+ (ReversedDisplay, fmt::Display, "\x1b[7m"),
+ (ReversedDisplay, fmt::Debug, "\x1b[7m"),
+ (ReversedDisplay, fmt::UpperHex, "\x1b[7m"),
+ (ReversedDisplay, fmt::LowerHex, "\x1b[7m"),
+ (ReversedDisplay, fmt::Binary, "\x1b[7m"),
+ (ReversedDisplay, fmt::UpperExp, "\x1b[7m"),
+ (ReversedDisplay, fmt::LowerExp, "\x1b[7m"),
+ (ReversedDisplay, fmt::Octal, "\x1b[7m"),
+ (ReversedDisplay, fmt::Pointer, "\x1b[7m"),
+
+ // Hide the text
+ (HiddenDisplay, fmt::Display, "\x1b[8m"),
+ (HiddenDisplay, fmt::Debug, "\x1b[8m"),
+ (HiddenDisplay, fmt::UpperHex, "\x1b[8m"),
+ (HiddenDisplay, fmt::LowerHex, "\x1b[8m"),
+ (HiddenDisplay, fmt::Binary, "\x1b[8m"),
+ (HiddenDisplay, fmt::UpperExp, "\x1b[8m"),
+ (HiddenDisplay, fmt::LowerExp, "\x1b[8m"),
+ (HiddenDisplay, fmt::Octal, "\x1b[8m"),
+ (HiddenDisplay, fmt::Pointer, "\x1b[8m"),
+
+ // StrikeThrough
+ (StrikeThroughDisplay, fmt::Display, "\x1b[9m"),
+ (StrikeThroughDisplay, fmt::Debug, "\x1b[9m"),
+ (StrikeThroughDisplay, fmt::UpperHex, "\x1b[9m"),
+ (StrikeThroughDisplay, fmt::LowerHex, "\x1b[9m"),
+ (StrikeThroughDisplay, fmt::Binary, "\x1b[9m"),
+ (StrikeThroughDisplay, fmt::UpperExp, "\x1b[9m"),
+ (StrikeThroughDisplay, fmt::LowerExp, "\x1b[9m"),
+ (StrikeThroughDisplay, fmt::Octal, "\x1b[9m"),
+ (StrikeThroughDisplay, fmt::Pointer, "\x1b[9m"),
+}