temply 0.3.0

Simple, opinionated template engine
Documentation
mod util;

use temply::Template;

#[test]
fn test_simple() {
    #[derive(Debug, Template)]
    #[template_inline = "Hello World!"]
    struct MyTemplate;

    assert_render!(MyTemplate, "Hello World!");
}

#[test]
fn test_raw_string() {
    #[derive(Debug, Template)]
    #[template_inline = r###"Hello World!"###]
    struct MyTemplate;

    assert_render!(MyTemplate, "Hello World!");
}

#[test]
fn test_unit_struct() {
    #[derive(Debug, Template)]
    #[template_inline = "Unit struct"]
    struct MyTemplate;

    assert_render!(MyTemplate, "Unit struct");
}

#[test]
fn test_tuple_struct() {
    #[derive(Debug, Template)]
    #[template_inline = "Tuple struct {{ self.0 }}"]
    struct MyTemplate(i32);

    assert_render!(MyTemplate(-3), "Tuple struct -3");
}

#[test]
fn test_c_struct() {
    #[derive(Debug, Template)]
    #[template_inline = "C struct {{ value }} {{ self.x }}"]
    struct MyTemplate {
        value: i32,
        x: u8,
    }

    assert_render!(MyTemplate { value: -3, x: 1 }, "C struct -3 1");
}

#[test]
fn test_enum() {
    #[derive(Debug, Template)]
    #[template_inline = "Enum ..."]
    enum MyTemplate {
        A(i32),
        #[allow(unused)]
        B,
        #[allow(unused)]
        C {
            val: i32,
        },
    }

    assert_render!(MyTemplate::A(42), "Enum ...");
}

#[test]
fn test_method() {
    #[derive(Debug, Template)]
    #[template_inline = "x(true) = {{ self.x(true) }}"]
    struct MyTemplate;

    impl MyTemplate {
        fn x(&self, v: bool) -> bool {
            v && !v
        }
    }

    assert_render!(MyTemplate, "x(true) = false");
}

#[test]
fn test_function() {
    #[derive(Debug, Template)]
    #[template_inline = "4 + 3 = {{ add(4, 3) }}"]
    struct MyTemplate;

    fn add(a: i32, b: i32) -> i32 {
        a + b
    }

    assert_render!(MyTemplate, "4 + 3 = 7");
}

#[test]
fn test_lifetime() {
    #[derive(Debug, Template)]
    #[template_inline = "{{ self.0 }}"]
    struct MyTemplate<'a>(&'a str);

    assert_render!(MyTemplate("test"), "test");
}

#[test]
fn test_generics() {
    #[derive(Debug, Template)]
    #[template_inline = "{{ self.0 }}"]
    struct MyTemplate<T>(&'static str, T);

    assert_render!(MyTemplate("test", true), "test");
}

#[test]
fn test_lifetime_and_generics() {
    #[derive(Debug, Template)]
    #[template_inline = "{{ self.0 }}"]
    struct MyTemplate<'a, T, U>(&'a str, T, U);

    assert_render!(MyTemplate("test", true, 0), "test");
}