mirror of
https://github.com/askama-rs/askama.git
synced 2025-09-28 05:21:14 +00:00
54 lines
1.1 KiB
Rust
54 lines
1.1 KiB
Rust
use askama::Template;
|
|
|
|
// This test ensures that rust macro calls in `let`/`set` statements are not prepended with `&`.
|
|
#[test]
|
|
fn let_macro() {
|
|
#[derive(Template)]
|
|
#[template(
|
|
source = r#"{%- let x -%}
|
|
{%- if y -%}
|
|
{%- let x = String::new() %}
|
|
{%- else -%}
|
|
{%- let x = format!("blob") %}
|
|
{%- endif -%}
|
|
{{ x }}"#,
|
|
ext = "html"
|
|
)]
|
|
struct A {
|
|
y: bool,
|
|
}
|
|
|
|
let template = A { y: false };
|
|
assert_eq!(template.render().unwrap(), "blob")
|
|
}
|
|
|
|
// Ensures that variables name can start with `_`.
|
|
#[test]
|
|
fn underscore_ident1() {
|
|
#[derive(Template)]
|
|
#[template(source = r#"{% let _x = 7 %}{{ _x }}"#, ext = "html")]
|
|
struct X;
|
|
|
|
assert_eq!(X.render().unwrap(), "7")
|
|
}
|
|
|
|
// Ensures that variables can be named `_`.
|
|
#[test]
|
|
fn underscore_ident2() {
|
|
#[derive(Template)]
|
|
#[template(
|
|
source = r#"{% if let Some(_) = Some(12) %}hey{% endif %}
|
|
{% if let [_] = [12] %}hoy{% endif %}
|
|
{% match [12] %}
|
|
{%- when [_] %}matched
|
|
{%- endmatch -%}
|
|
{%- let _ = 2 -%}
|
|
{%- let [_] = [2] -%}
|
|
"#,
|
|
ext = "html"
|
|
)]
|
|
struct X;
|
|
|
|
assert_eq!(X.render().unwrap(), "hey\nhoy\nmatched");
|
|
}
|