Skip to main content

css_ast/types/
line_names.rs

1use super::prelude::*;
2use crate::CustomIdent;
3
4/// <https://drafts.csswg.org/css-grid-2/#typedef-line-names>
5///
6/// ```text,ignore
7/// <line-names> = '[' <custom-ident>* ']'
8/// ```
9#[node]
10#[derive(Parse, Peek, ToCursors, ToSpan, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
11#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
12#[cfg_attr(feature = "visitable", derive(csskit_derives::Visitable), visit(self))]
13#[derive(csskit_derives::NodeWithMetadata)]
14pub struct LineNames<'a> {
15	#[cfg_attr(feature = "visitable", visit(skip))]
16	#[semantic_eq(skip)]
17	pub open: T!['['],
18	pub idents: Vec<'a, CustomIdent>,
19	#[cfg_attr(feature = "visitable", visit(skip))]
20	#[semantic_eq(skip)]
21	pub close: T![']'],
22}
23
24#[cfg(test)]
25mod tests {
26	use super::*;
27	use crate::CssAtomSet;
28	use css_parse::{assert_parse, assert_parse_error, assert_peek_false};
29
30	#[test]
31	fn test_writes() {
32		assert_parse!(CssAtomSet::ATOMS, LineNames, "[]");
33		assert_parse!(CssAtomSet::ATOMS, LineNames, "[foo]");
34		assert_parse!(CssAtomSet::ATOMS, LineNames, "[foo bar]");
35	}
36
37	#[test]
38	fn test_errors() {
39		assert_parse_error!(CssAtomSet::ATOMS, LineNames, "[");
40		assert_peek_false!(CssAtomSet::ATOMS, LineNames, "foo");
41	}
42}