Skip to main content

css_ast/rules/
starting_style.rs

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