use super::{color::Color, styled::StyledText};
use std::fmt::Display;
pub trait StyleExt: Sized {
fn color(self, color: Color) -> StyledText<Self>;
fn bg(self, color: Color) -> StyledText<Self>;
fn black(self) -> StyledText<Self>;
fn red(self) -> StyledText<Self>;
fn green(self) -> StyledText<Self>;
fn yellow(self) -> StyledText<Self>;
fn blue(self) -> StyledText<Self>;
fn magenta(self) -> StyledText<Self>;
fn cyan(self) -> StyledText<Self>;
fn white(self) -> StyledText<Self>;
fn rgb(self, r: u8, g: u8, b: u8) -> StyledText<Self>;
fn bold(self) -> StyledText<Self>;
fn italic(self) -> StyledText<Self>;
fn underline(self) -> StyledText<Self>;
fn blink(self) -> StyledText<Self>;
fn strikethrough(self) -> StyledText<Self>;
fn dim(self) -> StyledText<Self>;
fn reset(self) -> StyledText<Self>;
}
impl<T: Display> StyleExt for T {
fn color(self, color: Color) -> StyledText<Self> {
StyledText::new(self).color(color)
}
fn bg(self, color: Color) -> StyledText<Self> {
StyledText::new(self).bg(color)
}
fn black(self) -> StyledText<Self> {
StyledText::new(self).black()
}
fn red(self) -> StyledText<Self> {
StyledText::new(self).red()
}
fn green(self) -> StyledText<Self> {
StyledText::new(self).green()
}
fn yellow(self) -> StyledText<Self> {
StyledText::new(self).yellow()
}
fn blue(self) -> StyledText<Self> {
StyledText::new(self).blue()
}
fn magenta(self) -> StyledText<Self> {
StyledText::new(self).magenta()
}
fn cyan(self) -> StyledText<Self> {
StyledText::new(self).cyan()
}
fn white(self) -> StyledText<Self> {
StyledText::new(self).white()
}
fn rgb(self, r: u8, g: u8, b: u8) -> StyledText<Self> {
StyledText::new(self).rgb(r, g, b)
}
fn bold(self) -> StyledText<Self> {
StyledText::new(self).bold()
}
fn italic(self) -> StyledText<Self> {
StyledText::new(self).italic()
}
fn underline(self) -> StyledText<Self> {
StyledText::new(self).underline()
}
fn blink(self) -> StyledText<Self> {
StyledText::new(self).blink()
}
fn strikethrough(self) -> StyledText<Self> {
StyledText::new(self).strikethrough()
}
fn dim(self) -> StyledText<Self> {
StyledText::new(self).dim()
}
fn reset(self) -> StyledText<Self> {
StyledText::new(self).reset()
}
}