css_ast/
lib.rs

1#![deny(warnings)]
2
3mod css_atom_set;
4mod diagnostics;
5mod functions;
6mod metadata;
7mod properties;
8mod rules;
9mod selector;
10mod specificity;
11mod stylerule;
12mod stylesheet;
13#[cfg(test)]
14mod test_helpers;
15mod traits;
16mod types;
17mod units;
18mod values;
19#[cfg(feature = "visitable")]
20pub mod visit;
21
22pub use css_atom_set::*;
23pub use css_parse::{Declaration, DeclarationValue, Diagnostic};
24pub use functions::*;
25pub use metadata::*;
26pub use properties::*;
27pub use rules::*;
28pub use selector::*;
29pub use stylerule::*;
30pub use stylesheet::*;
31pub use traits::*;
32pub use types::*;
33pub use units::*;
34pub use values::*;
35#[cfg(feature = "visitable")]
36pub use visit::*;
37
38use crate::diagnostics::CssDiagnostic;
39
40use css_parse::{
41	Cursor, CursorSink, NodeMetadata, NodeWithMetadata, Parse, Parser, Peek, Result as ParserResult, SemanticEq, Span,
42	ToCursors, ToSpan,
43};
44
45// TODO! - delete this when we're done ;)
46#[derive(Default, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
47#[cfg_attr(feature = "serde", derive(serde::Serialize), serde(untagged))]
48#[cfg_attr(feature = "visitable", derive(csskit_derives::Visitable), visit(skip))]
49pub enum Todo {
50	#[default]
51	Todo,
52}
53
54impl<'a> Peek<'a> for Todo {
55	fn peek<I>(_p: &Parser<'a, I>, _c: Cursor) -> bool
56	where
57		I: Iterator<Item = Cursor> + Clone,
58	{
59		false
60	}
61}
62
63impl<'a> Parse<'a> for Todo {
64	fn parse<I>(p: &mut Parser<'a, I>) -> ParserResult<Self>
65	where
66		I: Iterator<Item = Cursor> + Clone,
67	{
68		Err(Diagnostic::new(p.next(), Diagnostic::unimplemented))?
69	}
70}
71
72impl ToCursors for Todo {
73	fn to_cursors(&self, _: &mut impl CursorSink) {}
74}
75
76impl ToSpan for Todo {
77	fn to_span(&self) -> Span {
78		Span::DUMMY
79	}
80}
81
82impl SemanticEq for Todo {
83	fn semantic_eq(&self, _: &Self) -> bool {
84		false
85	}
86}
87
88impl<M: NodeMetadata> NodeWithMetadata<M> for Todo {
89	fn metadata(&self) -> M {
90		M::default()
91	}
92}