aboutsummaryrefslogtreecommitdiffstats
path: root/askama_shared/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-04-26Add tests for Whitespace::Minize parsingLibravatar Guillaume Gomez1-0/+29
2022-04-26Add test for new `whitespace` parameter value: "minimize"Libravatar Guillaume Gomez1-0/+9
2022-04-26Rename Whitespace::Trim into Whitespace::SuppressLibravatar Guillaume Gomez2-12/+12
2022-04-26Add WhitespaceHandling::MinimizeLibravatar Guillaume Gomez3-20/+47
2022-04-26Add new minimize jinja character handling: `~`Libravatar Guillaume Gomez1-1/+5
2022-04-21Rename `suppress_whitespace` into `whitespace` and update expected values to ↵Libravatar Guillaume Gomez2-19/+55
"suppress" and "preserve"
2022-04-21Add config option to derive macro so we can specify config file locationLibravatar Guillaume Gomez3-3/+17
2022-04-21Parse template derive args outside of TemplateInput::newLibravatar Guillaume Gomez2-98/+125
2022-04-21Update parser to allow "+" signLibravatar Guillaume Gomez2-166/+218
2022-04-21Add suppress_whitespace config optionLibravatar Guillaume Gomez3-7/+49
2022-03-31Simplify the implementation of askama_axumLibravatar Jonas Platte1-1/+1
2022-03-31Add io::writer helper methodsLibravatar René Kijewski1-2/+20
It might not be immediately obvious to everyone how easy it is to use Askama template with std::io (e.g. files) instead of std::fmt, so this PR adds a few helper methods to make this more obvious to novice users.
2022-03-31Expose the fact that templates implement DisplayLibravatar René Kijewski1-2/+21
This is a quite useful feature, because you can use templates in format!(), format_args!(), etc.
2022-03-30Move Template into askama_shared, tooLibravatar René Kijewski1-0/+88
The traits Template and DynTemplate need to be in sync with askama_shared's generator. #647 consolidated the template crating into askama_shared, this PR moves the trait itself.
2022-03-28Implement std::error::Error::sourceLibravatar René Kijewski1-4/+4
Error::cause() is deprecated since Rust 1.33.
2022-03-26fix formattingLibravatar Axel Kappel1-1/+1
2022-03-26made capitalize filter unicode awareLibravatar Axel Kappel1-13/+10
2022-03-23Merge derive.rs into generator.rsLibravatar René Kijewski3-119/+100
2022-03-23Un-"pub" most of askama_shared's internalsLibravatar René Kijewski6-81/+81
Previously askama_shared exported most of it's internals, so askama_derive could use them. This is not needed anymore.
2022-03-23Reduce askama_derive to a single re-exportLibravatar René Kijewski2-0/+107
All the hard work in askama_derive was actually done in askama_shared. This PR removes the back-and-forth interaction between the two crates. Now askama_derive is a single re-export of `#[derive(Template)]` which has to be done in a proc_macro crate. This most likely means that askama_derive is "final", unless another derive template needs to be introduced in the future.
2022-03-23Move handling of integrations into askama_sharedLibravatar René Kijewski2-50/+27
Before this PR the handling of integrations was done both by askama_shared and askama_derive. This diff lets askama_shared do the work. This will prevent problems like #629, when both packages might come out of sync.
2022-03-23Fix clippy warningLibravatar René Kijewski1-1/+1
2022-02-25Actix Web v4.0 is hereLibravatar René Kijewski1-4/+4
2022-02-16Make json filter safeLibravatar René Kijewski2-17/+24
Previously the built-in json filter had an issue that made it unsafe to use in HTML data. When used in HTML attributes an attacker who is able to supply an arbitrary string that should be JSON encoded could close the containing HTML element e.g. with `"</div>"`, and write arbitrary HTML code afterwards as long as they use apostrophes instead of quotation marks. The programmer could make this use case safe by explicitly escaping the JSON result: `{{data|json|escape}}`. In a `<script>` context the json filter was not usable at all, because in scripts HTML escaped entities are not parsed outside of XHTML documents. Without using the safe filter an attacker could close the current script using `"</script>"`. This PR fixes the problem by always escaping less-than, greater-than, ampersand, and apostrophe characters using their JSON unicode escape sequence `\u00xx`. Unless the programmer explicitly uses the safe filter, quotation marks are HTML encoded as `&quot`. In scripts the programmer should use the safe filter, otherwise not.
2022-02-09askama_mendes: upgrade mendes to 0.0.62 (#636)Libravatar Dirkjan Ochtman1-1/+1
2022-02-07Add markdown filterLibravatar René Kijewski2-3/+94
2022-02-07Enable tracking of the offending span of an errorLibravatar René Kijewski1-5/+24
2022-02-03Take reference to AST ident only onceLibravatar René Kijewski1-12/+17
2022-02-03Replace if-let with matchLibravatar René Kijewski1-4/+6
2022-02-03Replace custom Cow with actual CowLibravatar René Kijewski3-47/+42
2022-01-31Remove `panic!()` in `loop.cycle([])`Libravatar René Kijewski1-1/+1
2022-01-31Don't wrap in StrLit just to extract the str imm.Libravatar René Kijewski1-20/+4
2022-01-31Update comment in TemplateInput::new()Libravatar René Kijewski1-1/+1
2022-01-31Make is_shadowing_variable() failableLibravatar René Kijewski1-12/+24
2022-01-31Allow comments in `{% match %}` and remove panic!Libravatar René Kijewski1-19/+2
2022-01-28Parse tuple expressionsLibravatar René Kijewski2-3/+163
Askama understands how to destructure tuples in let and match statements, but it does not understand how to build a tuple. This PR fixes this shortcoming.
2022-01-28 Implement error propagation expression: `?` (#590)Libravatar René Kijewski3-6/+30
This change allows using the operator `?` in askama expressions. It works like the same operator in Rust: if a `Result` is `Ok`, it is unwrapped. If it is an error, then the `render()` method fails with this error value.
2022-01-27Unify handling of calls (#614)Libravatar René Kijewski2-145/+157
Instead of having `Expr::VarCall`, `Expr::PathCall` and `Expr::MethodCall`, this PR unifies the handling of calls by removing the former three variants, and introducing `Expr::Call`.
2022-01-24Replace `&PathBuf` with `&Path`Libravatar René Kijewski2-9/+9
PathBuf is to String like Path is to str, so `&PathBuf` is a pointer to a pointer. Clippy does not likes that.
2022-01-13Tweak attribute parsing some moreLibravatar Dirkjan Ochtman1-10/+7
2022-01-13Make sure '#[template(…)]' is given exactly onceLibravatar René Kijewski1-16/+22
2022-01-13Rename "meta" in proc_macro parserLibravatar René Kijewski1-3/+3
2022-01-12Add template argument for contexts' hasherLibravatar René Kijewski1-2/+2
In askama_shared::generate a custom hasher for the contexts can be given, so Heritage needs to accept the argument to.
2022-01-12`&Option<T>` → `Option<&T>`Libravatar René Kijewski1-3/+3
2022-01-12Fully qualify some more paths in generated codeLibravatar René Kijewski1-3/+3
2022-01-07Determine Content-Type during compilationLibravatar René Kijewski2-0/+10
2022-01-07Make TemplateInput::extension() reusableLibravatar René Kijewski1-1/+7
2022-01-07Unshadow function escaping()Libravatar René Kijewski1-3/+3
2022-01-07Move extension_to_mime_type() to askama_sharedLibravatar René Kijewski2-0/+28
2022-01-06Optimize parsing of rangesLibravatar René Kijewski1-17/+13
Right now almost every expression needs to be parsed twice: `expr_any()` first parses the left-hand side of a range expression, and if no `..` or `..=` was found the left-hand expression is parsed again, this time as the result of the function. This diff removes the second parsing step by first looking for `.. (opt rhs)`, then for `lhs .. (opt rhs)`.