Ritz is a simple templating library that has JSX-like syntax powered by Snax.
Ritz requires Rust 1.32 or newer.
Some things are still a bit in flux, so I'm sorry in advance if I break anything!
```rust use ritz::html;
fn main() { let page_title = "Hello, world, from Snax!";
let page = html! {
/* Ritz supports regular multi-line Rust comments. */
<html>
<head>
/*
Literal strings need to be quoted, unlike JSX.
This makes whitespace much more explicit, which is
useful!
*/
<title>"Hello, Snax!"</title>
</head>
<body>
/*
Ritz supports embedding Rust expressions that return
`impl IntoIterator<HtmlContent>`. String and &str work
great here!
*/
<h1>
{ page_title }
</h1>
</body>
</html>
};
// The result of the html! macro is ritz::HtmlContent.
// It implements Display and gives you compact HTML without a doctype!
println!("<!doctype html>");
println!("{}", page);
} ```
Ritz is designed to work well when using functions to reuse pieces of HTML!
```rust use ritz::{html, Fragment, HtmlContent};
fn userwidget<'a>(name: &'a str, age: u32) -> HtmlContent<'a> {
html! {
fn users() -> HtmlContent<'static> { let users = vec![ ("Gandalf", 34), ("Arwen Undómie", 75), ("Primula Brandybuck", 133), ];
html! {
<div class="users">
{ Fragment::new(users.iter().map(|(name, age)| user_widget(name, *age))) }
</div>
}
} ```
Ritz is available under the MIT license. See LICENSE.txt for details.