aboutsummaryrefslogtreecommitdiffstats
path: root/askama_derive (unfollow)
Commit message (Collapse)AuthorFilesLines
2024-01-17Improve performance of `find_used_templates`Libravatar max1-2/+7
Signed-off-by: max <gmx.sht@gmail.com>
2024-01-17Deduplicating some code in `find_used_templates`Libravatar max1-6/+9
Signed-off-by: max <gmx.sht@gmail.com>
2024-01-17Allow included templates to `extend`, `import`, and `macro`Libravatar max3-58/+95
Signed-off-by: max <gmx.sht@gmail.com>
2024-01-17Refactored `match node` in `find_used_templates`Libravatar max1-3/+17
Signed-off-by: max <gmx.sht@gmail.com>
2024-01-12Generator: make `normalize_identifier` faster (#946)Libravatar René Kijewski1-54/+105
`normalize_identifier` is called quite often in the generator, once for every variable name or path element that is written. This PR aims to speed up the function by * using a per-length input string length replacement map * binary searching the replacement map instead of a linear search Diffent, but functionally equivalent implementations were compared: ```text * linear search in one big map: 348.44 µs * binary search in one big map: 334.46 µs * linear search in a per-length map: 178.84 µs * binary search in a per-length map: 154.54 µs * perfect hashing: 170.87 µs ``` The winner of this competition is "binary search in a per-length map". It does not introduce new dependencies, but has the slight disadvantage that it uses one instance of `unsafe` code. I deem this disadvantage acceptable, though. Nb. It was also tested if a variant that only stores the replaced string would be faster. This "optimization" proved to be slower for all implementations except "binary search in a per-length map", for which it has the same runtime. Without a clear advantage to use the "optimized version", I chose to use the more easy to read slice of tuples variant. Obviously, for all measurements: YMMV.
2024-01-12Add `as_ref` builtin filterLibravatar Guillaume Gomez1-0/+17
2024-01-10Revert "Add automatic borrowing to let statement"Libravatar Guillaume Gomez1-7/+0
This reverts commit 3d52283b74573af509deb3c47cbabf7b7b58b1dd.
2024-01-09Make the `markdown` filter compatible with `String`Libravatar Jakub Stachurski1-1/+1
This commit solves issue #719. This is done by making the markdown filter borrow the string and simplifying the filter to accept `&str` instead of `AsRef<str>` Add test for the markdown filter using as input Revert markdown filter changes Revert unnecessary changes Improve test_markdown_owned_string test Use cargo fmt
2023-12-18Bump askama_derive version to 0.12.4Libravatar Dirkjan Ochtman1-1/+1
2023-12-18Make API more idiomaticLibravatar Dirkjan Ochtman2-4/+4
2023-12-18Unbreak reading config from default locationLibravatar Dirkjan Ochtman2-6/+8
I broke this in 2a4d58cbb2033114890415c98a61e730185d1f83 due to refactoring for better internal abstractions in askama_derive. We also don't currently have any tests for the default config path.
2023-12-18Prepare askama_derive and _parser releasesLibravatar Dirkjan Ochtman1-2/+2
2023-12-13Add automatic borrowing to let statementLibravatar max1-0/+7
Signed-off-by: max <gmx.sht@gmail.com>
2023-12-13Bugfix in `is_attr_self()`Libravatar max1-1/+1
Signed-off-by: max <gmx.sht@gmail.com>
2023-11-28Allow to pass named arguments to macro callsLibravatar Guillaume Gomez1-1/+55
2023-11-22Enhance match to include multiple targets (#911)Libravatar PizzasBear1-0/+10
Signed-off-by: max <gmx.sht@gmail.com>
2023-11-20Improve macro call arguments loopLibravatar Guillaume Gomez1-4/+1
2023-11-20Improve output error for non-matching number of arguments for macrosLibravatar Guillaume Gomez1-1/+8
2023-11-09add support for svg file extensionLibravatar Marvin Jütte2-3/+9
2023-11-01Remove unused `_did_loop` condition if `else` block is emptyLibravatar Guillaume Gomez1-9/+21
2023-11-01Avoid passing around duplicate dataLibravatar Dirkjan Ochtman2-21/+4
2023-11-01Build Config from TemplateArgsLibravatar Dirkjan Ochtman2-9/+12
2023-11-01Reorganize TemplateArgs and TemplateInput structureLibravatar Dirkjan Ochtman2-25/+24
2023-11-01Inline some logic into find_used_templates()Libravatar Dirkjan Ochtman2-8/+8
2023-11-01Cleanup imports a bitLibravatar Dirkjan Ochtman3-6/+4
2023-11-01Implement Default for MapChainLibravatar Dirkjan Ochtman2-8/+10
2023-11-01Move build_template() up to the crate rootLibravatar Dirkjan Ochtman2-63/+67
2023-11-01Remove unnecessary type annotationLibravatar Dirkjan Ochtman1-1/+1
2023-11-01Attach find_used_templates() to TemplateInputLibravatar Dirkjan Ochtman2-44/+45
2023-11-01Move TemplateArgs into input moduleLibravatar Dirkjan Ochtman2-134/+134
2023-11-01Inline nested derive_template() implementationLibravatar Dirkjan Ochtman2-12/+6
2023-10-12Allow macros to take `self` as an argumentLibravatar PizzasBear1-1/+1
2023-10-06Apply clippy suggestions from Rust 1.73Libravatar Dirkjan Ochtman1-1/+1
2023-10-03Advertise Discord channel instead of GitterLibravatar Dirkjan Ochtman1-1/+1
2023-09-29Bump askama and askama_derive versionsLibravatar Dirkjan Ochtman1-1/+1
2023-09-29Add MSRV checking in CILibravatar Dirkjan Ochtman2-8/+3
Bump MSRV to 1.65 for the use of let .. else.
2023-08-01parser: import `parser::{Expr, Node}`Libravatar René Kijewski2-4/+4
2023-08-01parser: `node::Loop` is much bigger than the other variantsLibravatar René Kijewski1-8/+4
2023-08-01parser: add type for `Node::Comment`Libravatar René Kijewski1-5/+5
2023-08-01parser: remove re-exports `parser::{node,expr}::*`Libravatar René Kijewski3-5/+10
2023-08-01parser: add type for `Node::Extends`Libravatar René Kijewski2-3/+3
2023-08-01parser: add type for `Node::Include`Libravatar René Kijewski1-8/+7
2023-08-01parser: rename `Node::Cond` into `If` and add typeLibravatar René Kijewski2-10/+9
2023-08-01parser: add type for `Node::Let`Libravatar René Kijewski1-31/+19
2023-08-01parser: add type for `Node::Raw`Libravatar René Kijewski1-4/+4
2023-08-01parser: add type for `Node::Lit`Libravatar René Kijewski1-6/+7
2023-08-01parser: add type for `Node::BlockDef`Libravatar René Kijewski2-34/+13
2023-08-01parser: add type for `Node::Match`Libravatar René Kijewski2-9/+13
2023-08-01parser: add type for `Node::Call`Libravatar René Kijewski1-7/+10
2023-08-01parser: add type for `Node::Import`Libravatar René Kijewski2-8/+8