use super::selector_impl::InlinerSelectors;
use cssparser::ToCss;
use selectors::parser::NonTSPseudoClass;
use std::fmt;
#[derive(PartialEq, Eq, Clone, Debug)]
pub(crate) enum PseudoClass {
AnyLink,
Link,
Visited,
Active,
Focus,
Hover,
Enabled,
Disabled,
Checked,
Indeterminate,
}
impl NonTSPseudoClass for PseudoClass {
type Impl = InlinerSelectors;
fn is_active_or_hover(&self) -> bool {
matches!(*self, PseudoClass::Active | PseudoClass::Hover)
}
fn is_user_action_state(&self) -> bool {
matches!(
*self,
PseudoClass::Active | PseudoClass::Hover | PseudoClass::Focus
)
}
}
impl ToCss for PseudoClass {
fn to_css<W>(&self, dest: &mut W) -> fmt::Result
where
W: fmt::Write,
{
dest.write_str(match *self {
PseudoClass::AnyLink => ":any-link",
PseudoClass::Link => ":link",
PseudoClass::Visited => ":visited",
PseudoClass::Active => ":active",
PseudoClass::Focus => ":focus",
PseudoClass::Hover => ":hover",
PseudoClass::Enabled => ":enabled",
PseudoClass::Disabled => ":disabled",
PseudoClass::Checked => ":checked",
PseudoClass::Indeterminate => ":indeterminate",
})
}
}