use super::{Color, Unit};
use elvis_core_support::EnumStyle;
use std::cmp::Ordering;
#[derive(Clone, PartialEq, Eq)]
pub enum BoxShadow {
None,
Inherit,
Initial,
Inset,
Unset,
Unit(Unit),
Color(Color),
Customize(Vec<BoxShadow>),
Derive(Vec<BoxShadow>),
}
impl Default for BoxShadow {
fn default() -> BoxShadow {
BoxShadow::None
}
}
impl PartialOrd for BoxShadow {
fn partial_cmp(&self, o: &Self) -> Option<Ordering> {
self.to_string().partial_cmp(&o.to_string())
}
}
impl Ord for BoxShadow {
fn cmp(&self, o: &Self) -> Ordering {
self.to_string().cmp(&o.to_string())
}
}
impl ToString for BoxShadow {
fn to_string(&self) -> String {
match self {
BoxShadow::None => "none".to_string(),
BoxShadow::Inset => "inset".to_string(),
BoxShadow::Inherit => "inherit".to_string(),
BoxShadow::Initial => "initial".to_string(),
BoxShadow::Unset => "unset".to_string(),
BoxShadow::Unit(v) => v.to_string(),
BoxShadow::Color(v) => v.to_string(),
BoxShadow::Customize(v) => v
.iter()
.map(|s| s.to_string())
.collect::<Vec<String>>()
.join(" "),
BoxShadow::Derive(v) => v
.iter()
.map(|bs| bs.to_string())
.collect::<Vec<String>>()
.join(", "),
}
}
}
#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, EnumStyle)]
pub enum Position {
Absolute,
Relative,
}
impl Default for Position {
fn default() -> Position {
Position::Relative
}
}