use {
super::{
at_rules::{
counter_style::CounterStyleAtRule,
document::DocumentAtRule,
font_face::FontFaceAtRule,
font_feature_values::FontFeatureValuesAtRule,
import::ImportAtRule,
keyframes::KeyframesAtRule,
media::MediaAtRule,
namespace::NamespaceAtRule,
page::PageAtRule,
supports::SupportsAtRule,
viewport::ViewportAtRule,
},
CssRuleType,
StyleRule,
},
cssparser::ToCss,
std::fmt,
};
#[derive(Debug, Clone)]
pub enum CssRule {
CounterStyle(CounterStyleAtRule),
Document(DocumentAtRule),
FontFace(FontFaceAtRule),
FontFeatureValues(FontFeatureValuesAtRule),
Import(ImportAtRule),
Keyframes(KeyframesAtRule),
Media(MediaAtRule),
Namespace(NamespaceAtRule),
Page(PageAtRule),
Style(StyleRule),
Supports(SupportsAtRule),
Viewport(ViewportAtRule),
}
impl ToCss for CssRule {
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result {
use self::CssRule::*;
match *self {
CounterStyle(ref rule) => rule.to_css(dest),
Document(ref rule) => rule.to_css(dest),
FontFace(ref rule) => rule.to_css(dest),
FontFeatureValues(ref rule) => rule.to_css(dest),
Import(ref rule) => rule.to_css(dest),
Keyframes(ref rule) => rule.to_css(dest),
Media(ref rule) => rule.to_css(dest),
Namespace(ref rule) => rule.to_css(dest),
Page(ref rule) => rule.to_css(dest),
Style(ref rule) => rule.to_css(dest),
Supports(ref rule) => rule.to_css(dest),
Viewport(ref rule) => rule.to_css(dest),
}
}
}
impl CssRule {
#[inline(always)]
pub fn rule_type(&self) -> CssRuleType {
use self::CssRule::*;
match *self {
CounterStyle(_) => CssRuleType::CounterStyle,
Document(_) => CssRuleType::Document,
FontFace(_) => CssRuleType::FontFace,
FontFeatureValues(_) => CssRuleType::FontFeatureValues,
Import(_) => CssRuleType::Import,
Keyframes(_) => CssRuleType::Keyframes,
Media(_) => CssRuleType::Media,
Namespace(_) => CssRuleType::Namespace,
Page(_) => CssRuleType::Page,
Style(_) => CssRuleType::Style,
Supports(_) => CssRuleType::Supports,
Viewport(_) => CssRuleType::Viewport,
}
}
}