css_ast/rules/
starting_style.rs

1use super::prelude::*;
2
3// https://drafts.csswg.org/css-transitions-2/#at-ruledef-starting-style
4#[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}