lewp_css/domain/
css_rule.rs1use {
5 super::{
6 at_rules::{
7 counter_style::CounterStyleAtRule,
8 document::DocumentAtRule,
9 font_face::FontFaceAtRule,
10 font_feature_values::FontFeatureValuesAtRule,
11 import::ImportAtRule,
12 keyframes::KeyframesAtRule,
13 media::MediaAtRule,
14 namespace::NamespaceAtRule,
15 page::PageAtRule,
16 supports::SupportsAtRule,
17 viewport::ViewportAtRule,
18 },
19 CssRuleType,
20 StyleRule,
21 },
22 cssparser::ToCss,
23 std::fmt,
24};
25
26#[derive(Debug, Clone)]
28pub enum CssRule {
29 CounterStyle(CounterStyleAtRule),
31
32 Document(DocumentAtRule),
34
35 FontFace(FontFaceAtRule),
37
38 FontFeatureValues(FontFeatureValuesAtRule),
40
41 Import(ImportAtRule),
43
44 Keyframes(KeyframesAtRule),
46
47 Media(MediaAtRule),
49
50 Namespace(NamespaceAtRule),
52
53 Page(PageAtRule),
55
56 Style(StyleRule),
58
59 Supports(SupportsAtRule),
61
62 Viewport(ViewportAtRule),
64}
65
66impl ToCss for CssRule {
67 fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result {
69 use self::CssRule::*;
70
71 match *self {
72 CounterStyle(ref rule) => rule.to_css(dest),
73
74 Document(ref rule) => rule.to_css(dest),
75
76 FontFace(ref rule) => rule.to_css(dest),
77
78 FontFeatureValues(ref rule) => rule.to_css(dest),
79
80 Import(ref rule) => rule.to_css(dest),
81
82 Keyframes(ref rule) => rule.to_css(dest),
83
84 Media(ref rule) => rule.to_css(dest),
85
86 Namespace(ref rule) => rule.to_css(dest),
87
88 Page(ref rule) => rule.to_css(dest),
89
90 Style(ref rule) => rule.to_css(dest),
91
92 Supports(ref rule) => rule.to_css(dest),
93
94 Viewport(ref rule) => rule.to_css(dest),
95 }
96 }
97}
98
99impl CssRule {
100 #[inline(always)]
102 pub fn rule_type(&self) -> CssRuleType {
103 use self::CssRule::*;
104
105 match *self {
106 CounterStyle(_) => CssRuleType::CounterStyle,
107
108 Document(_) => CssRuleType::Document,
109
110 FontFace(_) => CssRuleType::FontFace,
111
112 FontFeatureValues(_) => CssRuleType::FontFeatureValues,
113
114 Import(_) => CssRuleType::Import,
115
116 Keyframes(_) => CssRuleType::Keyframes,
117
118 Media(_) => CssRuleType::Media,
119
120 Namespace(_) => CssRuleType::Namespace,
121
122 Page(_) => CssRuleType::Page,
123
124 Style(_) => CssRuleType::Style,
125
126 Supports(_) => CssRuleType::Supports,
127
128 Viewport(_) => CssRuleType::Viewport,
129 }
130 }
131}