css_ast/rules/
starting_style.rs1use super::prelude::*;
2
3#[derive(Parse, Peek, ToCursors, ToSpan, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
5#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
6#[cfg_attr(feature = "visitable", derive(csskit_derives::Visitable), visit)]
7#[cfg_attr(
8 feature = "css_feature_data",
9 derive(::csskit_derives::ToCSSFeature),
10 css_feature("css.at-rules.starting-style")
11)]
12#[derive(csskit_derives::NodeWithMetadata)]
13#[metadata(node_kinds = AtRule, used_at_rules = StartingStyle)]
14pub struct StartingStyleRule<'a> {
15 #[cfg_attr(feature = "visitable", visit(skip))]
16 #[atom(CssAtomSet::StartingStyle)]
17 pub name: T![AtKeyword],
18 #[metadata(delegate)]
19 pub block: StartingStyleRuleBlock<'a>,
20}
21
22#[derive(Parse, Peek, ToCursors, ToSpan, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
23#[cfg_attr(feature = "visitable", derive(csskit_derives::Visitable))]
24#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
25#[derive(csskit_derives::NodeWithMetadata)]
26pub struct StartingStyleRuleBlock<'a>(#[metadata(delegate)] pub RuleList<'a, Rule<'a>, CssMetadata>);
27
28#[cfg(test)]
29mod tests {
30 use super::*;
31 use crate::CssAtomSet;
32 use css_parse::assert_parse;
33
34 #[test]
35 fn size_test() {
36 assert_eq!(std::mem::size_of::<StartingStyleRule>(), 112);
37 assert_eq!(std::mem::size_of::<StartingStyleRuleBlock>(), 96);
38 }
39
40 #[test]
41 fn test_writes() {
42 assert_parse!(CssAtomSet::ATOMS, StartingStyleRule, "@starting-style{}");
43 assert_parse!(CssAtomSet::ATOMS, StartingStyleRule, "@starting-style{body{color:black}}");
44 assert_parse!(CssAtomSet::ATOMS, StartingStyleRule, "@starting-style{h1{background-color:transparent}}");
45 }
46}