use {
super::HasImportance,
crate::CustomParseError,
cssparser::{parse_important, ParseError, Parser, ToCss},
std::fmt,
Importance::*,
};
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
pub enum Importance {
Normal,
Important,
}
impl Default for Importance {
#[inline(always)]
fn default() -> Self {
Importance::Normal
}
}
impl ToCss for Importance {
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result {
match *self {
Normal => Ok(()),
Important => dest.write_str("!important"),
}
}
}
impl HasImportance for Importance {
#[inline(always)]
fn validateParsedImportance<'i>(
importance: Importance,
) -> Result<Self, ParseError<'i, CustomParseError<'i>>> {
Ok(importance)
}
#[inline(always)]
fn isImportant(&self) -> bool {
match *self {
Normal => false,
Important => true,
}
}
}
impl Importance {
#[inline(always)]
pub fn from_bool(isImportant: bool) -> Self {
if isImportant {
Important
} else {
Normal
}
}
#[inline(always)]
pub(crate) fn parse<'i, 't>(input: &mut Parser<'i, 't>) -> Self {
Self::from_bool(input.r#try(parse_important).is_ok())
}
}