aboutsummaryrefslogtreecommitdiffstats
path: root/askama_shared/src/parser.rs (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Parse `&str` instead of `&[u8]`Libravatar René Kijewski2021-11-241-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.
* Simplify identifier() implementationLibravatar René Kijewski2021-11-241-17/+15
|
* Simplify ws() and split_ws_parts()Libravatar René Kijewski2021-11-241-43/+19
|
* use nom::error::ErrorKindLibravatar René Kijewski2021-11-241-16/+7
|
* Implement `for … in … if …`Libravatar René Kijewski2021-11-111-1/+6
|
* Implement for-elseLibravatar René Kijewski2021-11-111-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 %} ```
* Use char() instead of tag() when possibleLibravatar René Kijewski2021-10-121-73/+76
|
* Remove custom ParserError typeLibravatar René Kijewski2021-10-121-5/+3
|
* Fix suggestions from nightly clippyLibravatar Dirkjan Ochtman2021-10-051-13/+9
|
* Ensure that {%break%} is only used inside of a loopLibravatar René Kijewski2021-08-301-46/+76
|
* Add {% break %} and {% continue %}Libravatar René Kijewski2021-08-301-0/+16
| | | | | This PR adds `{% break %}` and `{% continue %}` statements to break out of a loop, or continue with the next element of the iterator.
* Parse boolean literals in assignment targetsLibravatar René Kijewski2021-08-251-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.
* Upgrade to nom 7Libravatar Dirkjan Ochtman2021-08-211-5/+9
|
* Better error messages using cutsLibravatar René Kijewski2021-07-301-131/+186
|
* Use "target()" to parse "when" blockLibravatar René Kijewski2021-07-301-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.
* Allow omitting "with" keyword in match blocksLibravatar René Kijewski2021-07-301-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.
* Allow using "with" keyword in "let" statementsLibravatar René Kijewski2021-07-301-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.
* Implement destructoring of structsLibravatar René Kijewski2021-07-051-6/+42
| | | | | This PR implements the destructoring of structs on the lhs of "let" and "for" statements.
* Parse nested tuples in "let" statement lhsLibravatar René Kijewski2021-07-051-14/+32
|
* Stop eliding lifetimes in pathsLibravatar Dirkjan Ochtman2021-07-011-51/+50
|
* Implement "if let" statementLibravatar René Kijewski2021-07-011-5/+27
|
* Reworked constants to be parsed as pathsLibravatar vallentin2021-02-231-6/+24
|
* Added var and path parser testsLibravatar vallentin2021-02-221-1/+72
|
* Fixed path parser to account for single identifier type namesLibravatar vallentin2021-02-221-7/+23
|
* Removed needless borrow of rangeLibravatar vallentin2021-02-221-0/+1
|
* Bring Ws type name in line with API guidelinesLibravatar Dirkjan Ochtman2021-02-011-66/+66
|
* Apply suggestions from nightly clippyLibravatar Dirkjan Ochtman2021-01-221-4/+2
|
* Improved comment parsing testLibravatar vallentin2021-01-061-0/+18
|
* Fixed comment parsingLibravatar vallentin2021-01-061-7/+1
|
* Removed implicit borrowing of literals, calls, and more (fixes #404)Libravatar vallentin2021-01-051-0/+39
|
* Added numbers parser testLibravatar vallentin2021-01-051-0/+13
|
* Fixed parsing floatsLibravatar vallentin2021-01-051-2/+4
|
* Improved filter parsing testLibravatar vallentin2021-01-051-1/+35
|
* Fixed precedence of filters and unary operators (fixes #424)Libravatar vallentin2021-01-051-3/+3
|
* Added comment parser testsLibravatar vallentin2020-12-181-0/+17
|
* Added support for nested commentsLibravatar vallentin2020-12-181-4/+22
|
* Added set alias for letLibravatar vallentin2020-12-161-1/+1
|
* Fixed whitespace issue when generating match (#399)Libravatar Christian Vallentin2020-12-121-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
* Allow paths to start with `::` (#393)Libravatar Christian Vallentin2020-12-021-4/+25
|
* Fixed parsing precedence and associativity (#391)Libravatar Christian Vallentin2020-12-011-33/+173
|
* Improve error handling (see #368)Libravatar Dirkjan Ochtman2020-11-021-13/+17
|
* Apply clippy suggestionsLibravatar Dirkjan Ochtman2020-11-021-2/+2
|
* Upgrade to nom 6Libravatar Dirkjan Ochtman2020-11-021-36/+37
|
* Add support for more whitespace positions within expressions:Libravatar Ciprian Dorin Craciun2020-06-301-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.
* Reorder parser type definitionsLibravatar Dirkjan Ochtman2020-06-031-46/+46
|
* Revert whitespace matching to old macro behaviorLibravatar Dirkjan Ochtman2020-06-031-6/+8
|
* Strip 0 or more instead of 1 whitespace character (fixes #337)Libravatar Dirkjan Ochtman2020-06-031-2/+2
|
* Cast empty arrays to slice to get around clippyLibravatar Dirkjan Ochtman2020-05-211-3/+2
|
* Allow clippy reversed-empty-ranges for nowLibravatar Dirkjan Ochtman2020-05-211-0/+1
| | | | Pending https://github.com/rust-lang/rust-clippy/issues/5628.
* Support function callsLibravatar Nathan Lapel2020-03-181-9/+57
|