Skip to content

Commit a4b6742

Browse files
add errors
1 parent 7bb9904 commit a4b6742

15 files changed

+42
-5
lines changed

crates/djls-template-ast/src/ast.rs

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,28 @@ use thiserror::Error;
55
#[derive(Clone, Debug, Default, Serialize)]
66
pub struct Ast {
77
nodes: Vec<Node>,
8+
errors: Vec<AstError>,
89
}
910

1011
impl Ast {
1112
pub fn nodes(&self) -> &Vec<Node> {
1213
&self.nodes
1314
}
1415

16+
pub fn errors(&self) -> &Vec<AstError> {
17+
&self.errors
18+
}
19+
1520
pub fn add_node(&mut self, node: Node) {
1621
self.nodes.push(node);
1722
}
1823

24+
pub fn add_error(&mut self, error: AstError) {
25+
self.errors.push(error);
26+
}
27+
1928
pub fn finalize(&mut self) -> Result<Ast, AstError> {
20-
if self.nodes.is_empty() {
29+
if self.nodes.is_empty() && self.errors.is_empty() {
2130
return Err(AstError::EmptyAst);
2231
}
2332
Ok(self.clone())
@@ -123,10 +132,24 @@ pub enum AttributeValue {
123132

124133
pub type Attributes = BTreeMap<String, AttributeValue>;
125134

126-
#[derive(Error, Debug)]
135+
#[derive(Clone, Debug, Error, Serialize)]
127136
pub enum AstError {
128-
#[error("error parsing django tag, recieved empty tag name")]
129-
EmptyTag,
130-
#[error("empty ast")]
137+
#[error("Empty AST")]
131138
EmptyAst,
139+
#[error("Stream error: {0}")]
140+
StreamError(String),
141+
#[error("Unclosed tag: {0}")]
142+
UnclosedTag(String),
143+
#[error("Unexpected tag: {0}")]
144+
UnexpectedTag(String),
145+
#[error("Invalid tag: {0}")]
146+
InvalidTag(String),
147+
#[error("Block error: {0} in {1}")]
148+
BlockError(String, String),
149+
#[error("Argument error: {0} - {1}")]
150+
ArgumentError(String, String),
151+
#[error("Unexpected token")]
152+
UnexpectedToken,
153+
#[error("Unexpected end of file")]
154+
UnexpectedEof,
132155
}

crates/djls-template-ast/src/snapshots/djls_template_ast__parser__tests__comments__parse_comments.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ nodes:
77
Comment: HTML comment
88
- Django:
99
Comment: Django comment
10+
errors: []

crates/djls-template-ast/src/snapshots/djls_template_ast__parser__tests__django__parse_complex_if_elif.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,4 @@ nodes:
3636
Closing:
3737
name: endif
3838
bits: []
39+
errors: []

crates/djls-template-ast/src/snapshots/djls_template_ast__parser__tests__django__parse_django_for_block.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,4 @@ nodes:
3030
Closing:
3131
name: endfor
3232
bits: []
33+
errors: []

crates/djls-template-ast/src/snapshots/djls_template_ast__parser__tests__django__parse_django_if_block.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ nodes:
1717
Closing:
1818
name: endif
1919
bits: []
20+
errors: []

crates/djls-template-ast/src/snapshots/djls_template_ast__parser__tests__django__parse_django_variable.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ nodes:
1111
filters:
1212
- name: title
1313
arguments: []
14+
errors: []

crates/djls-template-ast/src/snapshots/djls_template_ast__parser__tests__django__parse_filter_chains.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ nodes:
1515
arguments: []
1616
- name: upper
1717
arguments: []
18+
errors: []

crates/djls-template-ast/src/snapshots/djls_template_ast__parser__tests__django__parse_mixed_content.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,3 +107,4 @@ nodes:
107107
name: endif
108108
bits: []
109109
- Text: "!"
110+
errors: []

crates/djls-template-ast/src/snapshots/djls_template_ast__parser__tests__django__parse_nested_for_if.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,4 @@ nodes:
3737
Closing:
3838
name: endfor
3939
bits: []
40+
errors: []

crates/djls-template-ast/src/snapshots/djls_template_ast__parser__tests__full_templates__parse_full.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,4 @@ nodes:
128128
Closing:
129129
name: endif
130130
bits: []
131+
errors: []

0 commit comments

Comments
 (0)