aboutsummaryrefslogtreecommitdiffstats
path: root/testing/tests/matches.rs
diff options
context:
space:
mode:
authorLibravatar René Kijewski <kijewski@library.vetmed.fu-berlin.de>2021-07-16 16:23:31 +0200
committerLibravatar Dirkjan Ochtman <dirkjan@ochtman.nl>2021-07-30 11:45:56 +0200
commit1622df7aeecb71fca2da630330513b26cefef16b (patch)
tree01348c855200790d9eb1a9bee01897d1e74f8604 /testing/tests/matches.rs
parent9e7fe8f2f9344d171800f98b556751d981ff9b17 (diff)
downloadaskama-1622df7aeecb71fca2da630330513b26cefef16b.tar.gz
askama-1622df7aeecb71fca2da630330513b26cefef16b.tar.bz2
askama-1622df7aeecb71fca2da630330513b26cefef16b.zip
Allow omitting "with" keyword in match blocks
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.
Diffstat (limited to '')
-rw-r--r--testing/tests/matches.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/testing/tests/matches.rs b/testing/tests/matches.rs
index d75a6c4..380a69c 100644
--- a/testing/tests/matches.rs
+++ b/testing/tests/matches.rs
@@ -113,3 +113,20 @@ fn test_match_no_whitespace() {
let s = MatchNoWhitespace { foo: Some(1) };
assert_eq!(s.render().unwrap(), "1");
}
+
+#[derive(Template)]
+#[template(
+ source = "{% match foo %}{% when Some(bar) %}{{ bar }}{% when None %}{% endmatch %}",
+ ext = "txt"
+)]
+struct MatchWithoutWithKeyword {
+ foo: Option<usize>,
+}
+
+#[test]
+fn test_match_without_with_keyword() {
+ let s = MatchWithoutWithKeyword { foo: Some(1) };
+ assert_eq!(s.render().unwrap(), "1");
+ let s = MatchWithoutWithKeyword { foo: None };
+ assert_eq!(s.render().unwrap(), "");
+}