css_ast/types/
repeat_style.rs

1use super::prelude::*;
2
3/// <https://drafts.csswg.org/css-backgrounds-4/#background-repeat>
4///
5/// ```text,ignore
6/// <repeat-style> = repeat-x | repeat-y | <repetition>{1,2}
7/// ```
8#[derive(Parse, Peek, ToCursors, ToSpan, SemanticEq, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
10#[cfg_attr(feature = "visitable", derive(csskit_derives::Visitable), visit(self))]
11pub enum RepeatStyle {
12	#[atom(CssAtomSet::RepeatX)]
13	RepeatX(T![Ident]),
14	#[atom(CssAtomSet::RepeatY)]
15	RepeatY(T![Ident]),
16	Repetition(Repetition, Option<Repetition>),
17}
18
19/// <https://drafts.csswg.org/css-backgrounds-4/#typedef-repetition>
20///
21/// ```text,ignore
22/// <repetition> = repeat | space | round | no-repeat
23/// ```
24#[derive(Parse, Peek, IntoCursor, ToCursors, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
25#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
26#[cfg_attr(feature = "visitable", derive(csskit_derives::Visitable), visit(self))]
27pub enum Repetition {
28	#[atom(CssAtomSet::Repeat)]
29	Repeat(T![Ident]),
30	#[atom(CssAtomSet::Space)]
31	Space(T![Ident]),
32	#[atom(CssAtomSet::Round)]
33	Round(T![Ident]),
34	#[atom(CssAtomSet::NoRepeat)]
35	NoRepeat(T![Ident]),
36}
37
38#[cfg(test)]
39mod test {
40	use super::*;
41	use css_parse::assert_parse;
42
43	#[test]
44	fn test_writes() {
45		assert_parse!(CssAtomSet::ATOMS, RepeatStyle, "repeat-x");
46		assert_parse!(CssAtomSet::ATOMS, RepeatStyle, "repeat-y");
47		assert_parse!(CssAtomSet::ATOMS, RepeatStyle, "repeat repeat");
48		assert_parse!(CssAtomSet::ATOMS, RepeatStyle, "space round");
49	}
50}