aboutsummaryrefslogtreecommitdiffstats
path: root/askama_parser/src/lib.rs (unfollow)
Commit message (Collapse)AuthorFilesLines
2023-08-01parser: ensure correct drop order for `Parsed`Libravatar René Kijewski1-2/+3
According to [RFC 1857] the fields of a struct are dropped in the same order as they are declared. For `struct S { a: A, b: B }` field `a` is dropped before field `b`. Our struct `Parsed` is self referencial. Its field `ast` depends on `source`, so `source` must outlife `ast`. This PR changes the order of the fields to reflect this requirement. In practice it should not matter, because we know that the variant of `Node` won't access the string data during their `Drop`, but better safe than sorry - maybe `Node` changes in the future. [RFC 1857]: https://rust-lang.github.io/rfcs/1857-stabilize-drop-order.html
2023-07-31parser: move node parsers into impl blockLibravatar Dirkjan Ochtman1-22/+2
2023-07-31parser: simplify top-level parser matchLibravatar Dirkjan Ochtman1-29/+24
2023-07-31parser: add top-level Ast typeLibravatar Dirkjan Ochtman1-33/+40
2023-07-31parser: move nested_parenthesis() helper into node moduleLibravatar Dirkjan Ochtman1-48/+0
2023-07-31parser: move helper functions into State implLibravatar Dirkjan Ochtman1-61/+61
2023-07-31parser: move trait impl closer to type definitionLibravatar Dirkjan Ochtman1-11/+0
2023-07-31parser: move single-use functions into callerLibravatar Dirkjan Ochtman1-13/+13
2023-07-31Extract askama_parser crateLibravatar Dirkjan Ochtman1-15/+18
2023-07-31derive: move Parsed into parser moduleLibravatar Dirkjan Ochtman1-0/+34
2023-07-31derive: define separate ParseError typeLibravatar Dirkjan Ochtman1-6/+17
2023-07-31derive: move Syntax into parser moduleLibravatar Dirkjan Ochtman1-1/+23
2023-06-28Parse templates onceLibravatar Dirkjan Ochtman1-4/+1
2023-02-21Revert "derive: Make Config `'static`"Libravatar René Kijewski1-13/+16
2023-01-30derive: refactor parserLibravatar René Kijewski1-0/+314
`parser.rs` was a single file containing almost 2000 lines. This PR split the file into multiple, smaller files. `Expr`, `Node`, and `Target` each get an own file. Each struct gets a `parse()` method that return `Result<Self>`, and every other detail is private to the file. This PR should make this essential part of Askama more easy to understand, and make future modifications easier.