Skip to main content

css_ast/types/
autospace.rs

1use super::prelude::*;
2
3/// <https://drafts.csswg.org/css-text-4/#typedef-autospace>
4///
5/// ```text,ignore
6/// <autospace> = no-autospace | [ ideograph-alpha || ideograph-numeric || punctuation ] || [ insert | replace ]
7/// ```
8#[syntax(" no-autospace | [ ideograph-alpha || ideograph-numeric || punctuation ] || [ insert | replace ] ")]
9#[derive(Parse, Peek, ToCursors, ToSpan, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
10#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
11#[cfg_attr(feature = "visitable", derive(csskit_derives::Visitable), visit)]
12#[derive(csskit_derives::NodeWithMetadata)]
13pub enum Autospace<'a> {}
14
15#[cfg(test)]
16mod tests {
17	use super::*;
18	use crate::CssAtomSet;
19	use css_parse::{assert_parse, assert_parse_error, assert_peek_false};
20
21	#[test]
22	fn test_writes() {
23		assert_parse!(CssAtomSet::ATOMS, Autospace, "no-autospace");
24		assert_parse!(CssAtomSet::ATOMS, Autospace, "ideograph-alpha");
25		assert_parse!(CssAtomSet::ATOMS, Autospace, "ideograph-numeric");
26		assert_parse!(CssAtomSet::ATOMS, Autospace, "punctuation");
27		assert_parse!(CssAtomSet::ATOMS, Autospace, "ideograph-alpha ideograph-numeric punctuation");
28		assert_parse!(CssAtomSet::ATOMS, Autospace, "insert");
29		assert_parse!(CssAtomSet::ATOMS, Autospace, "replace");
30		assert_parse!(CssAtomSet::ATOMS, Autospace, "ideograph-alpha insert");
31		assert_parse!(CssAtomSet::ATOMS, Autospace, "punctuation replace");
32	}
33
34	#[test]
35	fn test_errors() {
36		assert_peek_false!(CssAtomSet::ATOMS, Autospace, "");
37		assert_parse_error!(CssAtomSet::ATOMS, Autospace, "no-autospace insert");
38		assert_parse_error!(CssAtomSet::ATOMS, Autospace, "insert replace");
39		assert_parse_error!(CssAtomSet::ATOMS, Autospace, "ideograph-alpha ideograph-alpha");
40	}
41}