1use crate::pos::Span;
4use raffia_macro::{EnumAsIs, SpanIgnoredEq, Spanned};
5#[cfg(feature = "serialize")]
6use serde::Serialize;
7
8#[derive(Clone, Debug, Spanned, PartialEq, SpanIgnoredEq)]
9#[cfg_attr(feature = "serialize", derive(Serialize))]
10#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
11pub struct Comment<'s> {
12 pub content: &'s str,
13 pub kind: CommentKind,
14 pub span: Span,
15}
16
17#[derive(Clone, Debug, Spanned, PartialEq, SpanIgnoredEq, EnumAsIs)]
18#[cfg_attr(feature = "serialize", derive(Serialize))]
19pub enum CommentKind {
20 Block,
21 Line,
22}
23
24#[derive(Clone, Debug, PartialEq, EnumAsIs)]
25#[cfg_attr(feature = "serialize", derive(Serialize))]
26pub enum Token<'s> {
27 Eof(Eof),
28 Ampersand(Ampersand),
29 Asterisk(Asterisk),
30 AsteriskEqual(AsteriskEqual),
31 At(At),
32 AtKeyword(AtKeyword<'s>),
33 AtLBraceVar(AtLBraceVar<'s>),
34 BacktickCode(BacktickCode<'s>),
35 Bar(Bar),
36 BarBar(BarBar),
37 BarEqual(BarEqual),
38 CaretEqual(CaretEqual),
39 Cdc(Cdc),
40 Cdo(Cdo),
41 Colon(Colon),
42 ColonColon(ColonColon),
43 Comma(Comma),
44 Dedent(Dedent),
45 Dimension(Dimension<'s>),
46 DollarEqual(DollarEqual),
47 DollarLBraceVar(DollarLBraceVar<'s>),
48 DollarVar(DollarVar<'s>),
49 Dot(Dot),
50 DotDotDot(DotDotDot),
51 Equal(Equal),
52 EqualEqual(EqualEqual),
53 Exclamation(Exclamation),
54 ExclamationEqual(ExclamationEqual),
55 GreaterThan(GreaterThan),
56 GreaterThanEqual(GreaterThanEqual),
57 Hash(Hash<'s>),
58 HashLBrace(HashLBrace),
59 Ident(Ident<'s>),
60 Indent(Indent),
61 LBrace(LBrace),
62 LBracket(LBracket),
63 LessThan(LessThan),
64 LessThanEqual(LessThanEqual),
65 Linebreak(Linebreak),
66 LParen(LParen),
67 Minus(Minus),
68 Number(Number<'s>),
69 NumberSign(NumberSign),
70 Percent(Percent),
71 Percentage(Percentage<'s>),
72 Plus(Plus),
73 PlusUnderscore(PlusUnderscore),
74 Question(Question),
75 RBrace(RBrace),
76 RBracket(RBracket),
77 RParen(RParen),
78 Semicolon(Semicolon),
79 Solidus(Solidus),
80 Str(Str<'s>),
81 StrTemplate(StrTemplate<'s>),
82 Tilde(Tilde),
83 TildeEqual(TildeEqual),
84 UrlRaw(UrlRaw<'s>),
85 UrlTemplate(UrlTemplate<'s>),
86}
87
88#[derive(Clone, Debug, Spanned, PartialEq)]
89#[cfg_attr(feature = "serialize", derive(Serialize))]
90#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
91pub struct TokenWithSpan<'s> {
92 pub token: Token<'s>,
93 pub span: Span,
94}
95
96#[derive(Clone, Debug, PartialEq)]
97#[cfg_attr(feature = "serialize", derive(Serialize))]
98#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
99pub struct Ampersand {}
100
101#[derive(Clone, Debug, PartialEq)]
102#[cfg_attr(feature = "serialize", derive(Serialize))]
103#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
104pub struct Asterisk {}
105
106#[derive(Clone, Debug, PartialEq)]
107#[cfg_attr(feature = "serialize", derive(Serialize))]
108#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
109pub struct AsteriskEqual {}
110
111#[derive(Clone, Debug, PartialEq)]
112#[cfg_attr(feature = "serialize", derive(Serialize))]
113#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
114pub struct At {}
115
116#[derive(Clone, Debug, PartialEq)]
117#[cfg_attr(feature = "serialize", derive(Serialize))]
118#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
119pub struct AtKeyword<'s> {
120 pub ident: Ident<'s>,
121}
122
123#[derive(Clone, Debug, PartialEq)]
124#[cfg_attr(feature = "serialize", derive(Serialize))]
125#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
126pub struct AtLBraceVar<'s> {
127 pub ident: Ident<'s>,
128}
129
130#[derive(Clone, Debug, PartialEq)]
131#[cfg_attr(feature = "serialize", derive(Serialize))]
132#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
133pub struct BacktickCode<'s> {
134 pub raw: &'s str,
135}
136
137#[derive(Clone, Debug, PartialEq)]
138#[cfg_attr(feature = "serialize", derive(Serialize))]
139#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
140pub struct Bar {}
141
142#[derive(Clone, Debug, PartialEq)]
143#[cfg_attr(feature = "serialize", derive(Serialize))]
144#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
145pub struct BarBar {}
146
147#[derive(Clone, Debug, PartialEq)]
148#[cfg_attr(feature = "serialize", derive(Serialize))]
149#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
150pub struct BarEqual {}
151
152#[derive(Clone, Debug, PartialEq)]
153#[cfg_attr(feature = "serialize", derive(Serialize))]
154#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
155pub struct CaretEqual {}
156
157#[derive(Clone, Debug, PartialEq)]
159#[cfg_attr(feature = "serialize", derive(Serialize))]
160#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
161pub struct Cdc {}
162
163#[derive(Clone, Debug, PartialEq)]
165#[cfg_attr(feature = "serialize", derive(Serialize))]
166#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
167pub struct Cdo {}
168
169#[derive(Clone, Debug, PartialEq)]
170#[cfg_attr(feature = "serialize", derive(Serialize))]
171#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
172pub struct Colon {}
173
174#[derive(Clone, Debug, PartialEq)]
175#[cfg_attr(feature = "serialize", derive(Serialize))]
176#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
177pub struct ColonColon {}
178
179#[derive(Clone, Debug, PartialEq)]
180#[cfg_attr(feature = "serialize", derive(Serialize))]
181#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
182pub struct Comma {}
183
184#[derive(Clone, Debug, PartialEq)]
185#[cfg_attr(feature = "serialize", derive(Serialize))]
186#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
187pub struct Dedent {}
188
189#[derive(Clone, Debug, PartialEq)]
190#[cfg_attr(feature = "serialize", derive(Serialize))]
191#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
192pub struct Dimension<'s> {
193 pub value: Number<'s>,
194 pub unit: Ident<'s>,
195}
196
197#[derive(Clone, Debug, PartialEq)]
198#[cfg_attr(feature = "serialize", derive(Serialize))]
199#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
200pub struct DollarEqual {}
201
202#[derive(Clone, Debug, PartialEq)]
203#[cfg_attr(feature = "serialize", derive(Serialize))]
204#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
205pub struct DollarLBraceVar<'s> {
206 pub ident: Ident<'s>,
207}
208
209#[derive(Clone, Debug, PartialEq)]
210#[cfg_attr(feature = "serialize", derive(Serialize))]
211#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
212pub struct DollarVar<'s> {
213 pub ident: Ident<'s>,
214}
215
216#[derive(Clone, Debug, PartialEq)]
217#[cfg_attr(feature = "serialize", derive(Serialize))]
218#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
219pub struct Dot {}
220
221#[derive(Clone, Debug, PartialEq)]
222#[cfg_attr(feature = "serialize", derive(Serialize))]
223#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
224pub struct DotDotDot {}
225
226#[derive(Clone, Debug, PartialEq)]
227#[cfg_attr(feature = "serialize", derive(Serialize))]
228#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
229pub struct Eof {}
230
231#[derive(Clone, Debug, PartialEq)]
232#[cfg_attr(feature = "serialize", derive(Serialize))]
233#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
234pub struct Equal {}
235
236#[derive(Clone, Debug, PartialEq)]
237#[cfg_attr(feature = "serialize", derive(Serialize))]
238#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
239pub struct EqualEqual {}
240
241#[derive(Clone, Debug, PartialEq)]
242#[cfg_attr(feature = "serialize", derive(Serialize))]
243#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
244pub struct Exclamation {}
245
246#[derive(Clone, Debug, PartialEq)]
247#[cfg_attr(feature = "serialize", derive(Serialize))]
248#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
249pub struct ExclamationEqual {}
250
251#[derive(Clone, Debug, PartialEq)]
252#[cfg_attr(feature = "serialize", derive(Serialize))]
253#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
254pub struct GreaterThan {}
255
256#[derive(Clone, Debug, PartialEq)]
257#[cfg_attr(feature = "serialize", derive(Serialize))]
258#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
259pub struct GreaterThanEqual {}
260
261#[derive(Clone, Debug, PartialEq)]
262#[cfg_attr(feature = "serialize", derive(Serialize))]
263#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
264pub struct Hash<'s> {
265 pub raw: &'s str,
267 pub escaped: bool,
268}
269
270#[derive(Clone, Debug, PartialEq)]
271#[cfg_attr(feature = "serialize", derive(Serialize))]
272#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
273pub struct HashLBrace {}
274
275#[derive(Clone, Debug, PartialEq)]
276#[cfg_attr(feature = "serialize", derive(Serialize))]
277#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
278pub struct Ident<'s> {
279 pub escaped: bool,
280 pub raw: &'s str,
281}
282
283#[derive(Clone, Debug, PartialEq)]
284#[cfg_attr(feature = "serialize", derive(Serialize))]
285#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
286pub struct Indent {}
287
288#[derive(Clone, Debug, PartialEq)]
289#[cfg_attr(feature = "serialize", derive(Serialize))]
290#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
291pub struct LBrace {}
292
293#[derive(Clone, Debug, PartialEq)]
294#[cfg_attr(feature = "serialize", derive(Serialize))]
295#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
296pub struct LBracket {}
297
298#[derive(Clone, Debug, PartialEq)]
299#[cfg_attr(feature = "serialize", derive(Serialize))]
300#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
301pub struct LessThan {}
302
303#[derive(Clone, Debug, PartialEq)]
304#[cfg_attr(feature = "serialize", derive(Serialize))]
305#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
306pub struct LessThanEqual {}
307
308#[derive(Clone, Debug, PartialEq)]
309#[cfg_attr(feature = "serialize", derive(Serialize))]
310#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
311pub struct Linebreak {}
312
313#[derive(Clone, Debug, PartialEq)]
314#[cfg_attr(feature = "serialize", derive(Serialize))]
315#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
316pub struct LParen {}
317
318#[derive(Clone, Debug, PartialEq)]
319#[cfg_attr(feature = "serialize", derive(Serialize))]
320#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
321pub struct Minus {}
322
323#[derive(Clone, Debug, PartialEq)]
324#[cfg_attr(feature = "serialize", derive(Serialize))]
325#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
326pub struct Number<'s> {
327 pub raw: &'s str,
328}
329
330#[derive(Clone, Debug, PartialEq)]
332#[cfg_attr(feature = "serialize", derive(Serialize))]
333#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
334pub struct NumberSign {}
335
336#[derive(Clone, Debug, PartialEq)]
337#[cfg_attr(feature = "serialize", derive(Serialize))]
338#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
339pub struct Percent {}
340
341#[derive(Clone, Debug, PartialEq)]
342#[cfg_attr(feature = "serialize", derive(Serialize))]
343#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
344pub struct Percentage<'s> {
345 pub value: Number<'s>,
346}
347
348#[derive(Clone, Debug, PartialEq)]
349#[cfg_attr(feature = "serialize", derive(Serialize))]
350#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
351pub struct Plus {}
352
353#[derive(Clone, Debug, PartialEq)]
354#[cfg_attr(feature = "serialize", derive(Serialize))]
355#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
356pub struct PlusUnderscore {}
357
358#[derive(Clone, Debug, PartialEq)]
359#[cfg_attr(feature = "serialize", derive(Serialize))]
360#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
361pub struct Question {}
362
363#[derive(Clone, Debug, PartialEq)]
364#[cfg_attr(feature = "serialize", derive(Serialize))]
365#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
366pub struct RBrace {}
367
368#[derive(Clone, Debug, PartialEq)]
369#[cfg_attr(feature = "serialize", derive(Serialize))]
370#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
371pub struct RBracket {}
372
373#[derive(Clone, Debug, PartialEq)]
374#[cfg_attr(feature = "serialize", derive(Serialize))]
375#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
376pub struct RParen {}
377
378#[derive(Clone, Debug, PartialEq)]
379#[cfg_attr(feature = "serialize", derive(Serialize))]
380#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
381pub struct Semicolon {}
382
383#[derive(Clone, Debug, PartialEq)]
384#[cfg_attr(feature = "serialize", derive(Serialize))]
385#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
386pub struct Solidus {}
387
388#[derive(Clone, Debug, PartialEq)]
389#[cfg_attr(feature = "serialize", derive(Serialize))]
390#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
391pub struct Str<'s> {
392 pub raw: &'s str,
393 pub escaped: bool,
394}
395
396#[derive(Clone, Debug, PartialEq)]
397#[cfg_attr(feature = "serialize", derive(Serialize))]
398#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
399pub struct StrTemplate<'s> {
400 pub raw: &'s str,
401 pub escaped: bool,
402 pub head: bool,
403 pub tail: bool,
404}
405
406#[derive(Clone, Debug, PartialEq)]
407#[cfg_attr(feature = "serialize", derive(Serialize))]
408#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
409pub struct Tilde {}
410
411#[derive(Clone, Debug, PartialEq)]
412#[cfg_attr(feature = "serialize", derive(Serialize))]
413#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
414pub struct TildeEqual {}
415
416#[derive(Clone, Debug, PartialEq)]
417#[cfg_attr(feature = "serialize", derive(Serialize))]
418#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
419pub struct UrlRaw<'s> {
420 pub raw: &'s str,
421 pub escaped: bool,
422}
423
424#[derive(Clone, Debug, PartialEq)]
425#[cfg_attr(feature = "serialize", derive(Serialize))]
426#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
427pub struct UrlTemplate<'s> {
428 pub raw: &'s str,
429 pub escaped: bool,
430 pub tail: bool,
431}