tera icon indicating copy to clipboard operation
tera copied to clipboard

[Question] Help understanding the `indent` built-in

Open apiraino opened this issue 9 months ago • 0 comments

I am looking at the new indent built-in introduces recently (merged in #798).

At first I was looking into slightly clarifying the documentation wording, see docs, but then went down this rabbit hole and found myself confused on how to use it.

Example main.rs:

use tera::{Context, Tera}; // v1.19.1

fn main() {
    let context = Context::new();
    let tera = Tera::new("./*.tt").unwrap();
    let res = tera.render("test.tt", &context).unwrap();
    println!("{}", res);
}

Tera template test.tt:

// testing `prefix`
-{{ "TEXT" | indent(prefix="") }}
-{{ "TEXT" | indent(prefix="    ") }}

// testing `first`
-{{ "one\n\ntwo\nthree" | indent }}
-{{ "one\n\ntwo\nthree" | indent(first=true) }}

// testing `blank`
-{{ "   ABCD" | indent(blank=true) }}
-{{ "   ABCD" | indent(blank=false) }}
-{{ "   " | indent(blank=false) }}
-{{ "   " | indent(blank=true) }}

Will be rendered as:

// testing `prefix`
-TEXT
-TEXT

// testing `first`
-one\n\ntwo\nthree
-    one\n\ntwo\nthree

// testing `blank`
-   ABCD
-   ABCD
-   
-

Question for @untereiner (author of the #798 ): can you help me understand how the flags blank,first and prefix actually work? The above template rendering is slightly confusing for me.

Thanks!

apiraino avatar May 18 '24 11:05 apiraino