css_ast/types/
line_names.rs1use super::prelude::*;
2use crate::CustomIdent;
3
4#[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}