horrorshow 0.4.0

a templating library written in rust macros
Documentation

Horrorshow

Build Status

A macro-based html templating library (1.0 compatible).

Documentation: https://stebalien.github.io/horrorshow-rs/horrorshow/

Example:

# #[macro_use] extern crate horrorshow;
# fn main() {
use horrorshow::prelude::*;
let actual = html! {
    html {
        head {
            title { : "Hello world!" }
        }
        body {
            // attributes
            h1(id="heading") {
                // Insert escaped text
                : "Hello! This is <html />"
            }
            p {
                // Insert raw text (unescaped)
                : raw!("Let's <i>count</i> to 10!")
            }
            ol(id="count") {
                // run some inline code...
                |mut tmpl| for i in 0..10 {
                    // append to the current template.
                    // store output because rust bug #25753
                    tmpl = tmpl << html! {
                        li {
                            // format some text
                            #{"{}", i+1 }
                        }
                    };
                }
            }
            // You need semi-colons for tags without children.
            br; br;
            p {
                : "Easy!"
            }
        }
    }
}.into_string();

let expected = "\
<html>\
  <head>\
    <title>Hello world!</title>\
  </head>\
  <body>\
    <h1 id=\"heading\">Hello! This is &lt;html /&gt;</h1>\
    <p>Let's <i>count</i> to 10!</p>\
    <ol id=\"count\">\
      <li>1</li>\
      <li>2</li>\
      <li>3</li>\
      <li>4</li>\
      <li>5</li>\
      <li>6</li>\
      <li>7</li>\
      <li>8</li>\
      <li>9</li>\
      <li>10</li>\
    </ol>\
    <br /><br />\
    <p>Easy!</p>\
  </body>\
</html>";
assert_eq!(expected, actual);

# }