use super::{
AnsiColor,
CssColor,
TextStyle,
XtermColor,
CustomColor,
NamedColor
};
use crate::ColorFormattable;
#[derive(Debug, Clone, PartialEq)]
pub enum AnyColor {
Ansi(AnsiColor),
Css(CssColor),
Style(TextStyle),
Xterm(XtermColor),
Custom(CustomColor),
Named(NamedColor)
}
impl ColorFormattable for AnyColor {
fn format(&self, is_background: bool) -> String {
match self {
AnyColor::Ansi(c) => c.format(is_background),
AnyColor::Css(c) => c.format(is_background),
AnyColor::Style(c) => c.format(is_background),
AnyColor::Xterm(c) => c.format(is_background),
AnyColor::Custom(c) => c.format(is_background),
AnyColor::Named(c) => c.format(is_background)
}
}
}
impl From<AnsiColor> for AnyColor {
fn from(c: AnsiColor) -> Self {
AnyColor::Ansi(c)
}
}
impl From<CssColor> for AnyColor {
fn from(c: CssColor) -> Self {
AnyColor::Css(c)
}
}
impl From<TextStyle> for AnyColor {
fn from(c: TextStyle) -> Self {
AnyColor::Style(c)
}
}
impl From<XtermColor> for AnyColor {
fn from(c: XtermColor) -> Self {
AnyColor::Xterm(c)
}
}
impl From<CustomColor> for AnyColor {
fn from(c: CustomColor) -> Self {
AnyColor::Custom(c)
}
}
impl From<NamedColor> for AnyColor {
fn from(c: NamedColor) -> Self {
AnyColor::Named(c)
}
}