aboutsummaryrefslogtreecommitdiffstats
path: root/askama_shared/src/parser.rs (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-11-24Simplify take_content() implementationLibravatar René Kijewski1-43/+37
2021-11-24Parse `&str` instead of `&[u8]`Libravatar René Kijewski1-132/+120
Askama's takes valid UTF-8 files as input. So why operate on byte slices instead of strings? This makes writing some functions a lot simpler.
2021-11-24Simplify identifier() implementationLibravatar René Kijewski1-17/+15
2021-11-24Simplify ws() and split_ws_parts()Libravatar René Kijewski1-43/+19
2021-11-24use nom::error::ErrorKindLibravatar René Kijewski1-16/+7
2021-11-11Implement `for … in … if …`Libravatar René Kijewski1-1/+6
2021-11-11Implement for-elseLibravatar René Kijewski1-9/+40
This PR implements for-else statements like in Jinja. They make it easy to print an alternative message if the loop iterator was empty. E.g. ```rs {% for result in result %} <li>{{ result }}</li> {% else %} <li><em>no results</em></li> {% endfor %} ```
2021-10-12Use char() instead of tag() when possibleLibravatar René Kijewski1-73/+76
2021-10-12Remove custom ParserError typeLibravatar René Kijewski1-5/+3
2021-10-05Fix suggestions from nightly clippyLibravatar Dirkjan Ochtman1-13/+9
2021-08-30Ensure that {%break%} is only used inside of a loopLibravatar René Kijewski1-46/+76
2021-08-30Add {% break %} and {% continue %}Libravatar René Kijewski1-0/+16
This PR adds `{% break %}` and `{% continue %}` statements to break out of a loop, or continue with the next element of the iterator.
2021-08-25Parse boolean literals in assignment targetsLibravatar René Kijewski1-3/+21
268d825 introduced a regression that made matching against boolean literals impossible. E.g. "true" was interpreted as the variable "r#true". This PR fixes the problem. The bug was reported by @Restioson in issue #531.
2021-08-21Upgrade to nom 7Libravatar Dirkjan Ochtman1-5/+9
2021-07-30Better error messages using cutsLibravatar René Kijewski1-131/+186
2021-07-30Use "target()" to parse "when" blockLibravatar René Kijewski1-150/+40
`target()` as used in parsing "let" and "if let" implements parsing nested tuples and structs. But it does not implement parsing literals. The functions `match_variant()` and `with_parameters()` as used in parsing "when" blocks do not implement parsing nested structs, but it implements parsing literals. This PR combines `match_variant()` and `with_parameters()` into `target()`, so that all `{%when%}` support nested structs, too.
2021-07-30Allow omitting "with" keyword in match blocksLibravatar René Kijewski1-1/+1
Askama uses the syntax `{% when Variant with (parameters) %}` in `{% match %}` blocks. This is done because Askama does not implement the whole pattern matching of Rust's `match` statements. This PR wants to bring Askama a step closer Rust's matching, so the "with" keyword should not be needed anymore.
2021-07-30Allow using "with" keyword in "let" statementsLibravatar René Kijewski1-0/+1
Askama uses the syntax `{% when Variant with (parameters) %}` in `{% match %}` blocks. This change allows the optional use of the keyword "with" in "let" and "if let" statements, too.
2021-07-05Implement destructoring of structsLibravatar René Kijewski1-6/+42
This PR implements the destructoring of structs on the lhs of "let" and "for" statements.
2021-07-05Parse nested tuples in "let" statement lhsLibravatar René Kijewski1-14/+32
2021-07-01Stop eliding lifetimes in pathsLibravatar Dirkjan Ochtman1-51/+50
2021-07-01Implement "if let" statementLibravatar René Kijewski1-5/+27
2021-02-23Reworked constants to be parsed as pathsLibravatar vallentin1-6/+24
2021-02-22Added var and path parser testsLibravatar vallentin1-1/+72
2021-02-22Fixed path parser to account for single identifier type namesLibravatar vallentin1-7/+23
2021-02-22Removed needless borrow of rangeLibravatar vallentin1-0/+1
2021-02-01Bring Ws type name in line with API guidelinesLibravatar Dirkjan Ochtman1-66/+66
2021-01-22Apply suggestions from nightly clippyLibravatar Dirkjan Ochtman1-4/+2
2021-01-06Improved comment parsing testLibravatar vallentin1-0/+18
2021-01-06Fixed comment parsingLibravatar vallentin1-7/+1
2021-01-05Removed implicit borrowing of literals, calls, and more (fixes #404)Libravatar vallentin1-0/+39
2021-01-05Added numbers parser testLibravatar vallentin1-0/+13
2021-01-05Fixed parsing floatsLibravatar vallentin1-2/+4
2021-01-05Improved filter parsing testLibravatar vallentin1-1/+35
2021-01-05Fixed precedence of filters and unary operators (fixes #424)Libravatar vallentin1-3/+3
2020-12-18Added comment parser testsLibravatar vallentin1-0/+17
2020-12-18Added support for nested commentsLibravatar vallentin1-4/+22
2020-12-16Added set alias for letLibravatar vallentin1-1/+1
2020-12-12Fixed whitespace issue when generating match (#399)Libravatar Christian Vallentin1-7/+5
* Fixed #397 * Updated parser to ignore whitespace between match and when * Updated test cases * Updated Python script to generate match ws tests * Added match ws tests * Resolved rustfmt lint
2020-12-02Allow paths to start with `::` (#393)Libravatar Christian Vallentin1-4/+25
2020-12-01Fixed parsing precedence and associativity (#391)Libravatar Christian Vallentin1-33/+173
2020-11-02Improve error handling (see #368)Libravatar Dirkjan Ochtman1-13/+17
2020-11-02Apply clippy suggestionsLibravatar Dirkjan Ochtman1-2/+2
2020-11-02Upgrade to nom 6Libravatar Dirkjan Ochtman1-36/+37
2020-06-30Add support for more whitespace positions within expressions:Libravatar Ciprian Dorin Craciun1-11/+20
* in function calls: `x ( 1 , 2 )`; * in path elements: `module :: element`; * in attributes: `x . y . z`; * in filter arguments: `x| filter ( 1 , 2 )`; * before unary operators: `! false` and `- 42`; * in grouped expressions: `( 1 + 2 )`; * also allow more than a single whitespace; Change some tests to include whitespaces in various positions.
2020-06-03Reorder parser type definitionsLibravatar Dirkjan Ochtman1-46/+46
2020-06-03Revert whitespace matching to old macro behaviorLibravatar Dirkjan Ochtman1-6/+8
2020-06-03Strip 0 or more instead of 1 whitespace character (fixes #337)Libravatar Dirkjan Ochtman1-2/+2
2020-05-21Cast empty arrays to slice to get around clippyLibravatar Dirkjan Ochtman1-3/+2
2020-05-21Allow clippy reversed-empty-ranges for nowLibravatar Dirkjan Ochtman1-0/+1
Pending https://github.com/rust-lang/rust-clippy/issues/5628.