Mustache Ohloh statistics Build Status

Inspired by ctemplate and et, Mustache is a framework-agnostic way to render logic-free views.

As ctemplates says, "It emphasizes separating logic from presentation: it is impossible to embed application logic in this template language."

rust-mustache is a rust implementation of Mustache.

Documentation

The different Mustache tags are documented at mustache(5).

Documentation for this library is here.

Install

Install it through Cargo!

toml [dependencies] mustache = "*"

Basic example

```rust extern crate mustache; extern crate rustc_serialize;

use std::io; use mustache::MapBuilder;

[derive(RustcEncodable)]

struct Planet { name: String, }

fn main() { // First the string needs to be compiled. let template = mustache::compile_str("hello {{name}}").unwrap();

// You can either use an encodable type to print "hello Mercury".
let planet = Planet { name: "Mercury".into() };
template.render(&mut io::stdout(), &planet).unwrap();
println!("");

// ... or you can use a builder to print "hello Venus".
let data = MapBuilder::new()
    .insert_str("name", "Venus")
    .build();

template.render_data(&mut io::stdout(), &data).unwrap();
println!("");

// ... you can even use closures.
let mut planets = vec!("Jupiter", "Mars", "Earth");

let data = MapBuilder::new()
    .insert_fn("name", move |_| {
        planets.pop().unwrap().into()
    })
    .build();

// prints "hello Earth"
template.render_data(&mut io::stdout(), &data).unwrap();
println!("");

// prints "hello Mars"
template.render_data(&mut io::stdout(), &data).unwrap();
println!("");

// prints "hello Jupiter"
template.render_data(&mut io::stdout(), &data).unwrap();
println!("");

} ```

Testing

Simply clone and run:

bash cargo test

If you want to run the test cases, you'll need the spec as well.

bash git submodule init git submodule update cargo test

License

See LICENSE File