hpx_browser/css_parser/
ast.rs1use crate::css_parser::{source::SourceLocation, token::Token};
2
3#[derive(Debug, Clone)]
5pub struct Stylesheet<'a> {
6 pub rules: Vec<Rule<'a>>,
7 pub loc: SourceLocation,
8}
9
10#[derive(Debug, Clone)]
12pub enum Rule<'a> {
13 Qualified(QualifiedRule<'a>),
14 At(AtRule<'a>),
15}
16
17#[derive(Debug, Clone)]
19pub struct QualifiedRule<'a> {
20 pub prelude: Vec<ComponentValue<'a>>,
21 pub declarations: Vec<Declaration<'a>>,
22 pub rules: Vec<Rule<'a>>,
23 pub loc: SourceLocation,
24}
25
26#[derive(Debug, Clone)]
28pub struct AtRule<'a> {
29 pub name: &'a str,
30 pub prelude: Vec<ComponentValue<'a>>,
31 pub block: Option<Block<'a>>,
32 pub loc: SourceLocation,
33}
34
35#[derive(Debug, Clone)]
37pub enum Block<'a> {
38 RuleList(Vec<Rule<'a>>),
39 DeclarationBlock {
40 declarations: Vec<Declaration<'a>>,
41 rules: Vec<Rule<'a>>,
42 },
43}
44
45#[derive(Debug, Clone)]
47pub struct Declaration<'a> {
48 pub name: &'a str,
49 pub value: Vec<ComponentValue<'a>>,
50 pub important: bool,
51 pub loc: SourceLocation,
52}
53
54#[derive(Debug, Clone)]
56pub enum ComponentValue<'a> {
57 Token(Token<'a>),
58 Function(CssFunction<'a>),
59 SimpleBlock(SimpleBlock<'a>),
60}
61
62#[derive(Debug, Clone)]
64pub struct CssFunction<'a> {
65 pub name: &'a str,
66 pub arguments: Vec<ComponentValue<'a>>,
67 pub loc: SourceLocation,
68}
69
70#[derive(Debug, Clone)]
72pub struct SimpleBlock<'a> {
73 pub token: char,
74 pub value: Vec<ComponentValue<'a>>,
75 pub loc: SourceLocation,
76}