Horrorshow is a POC macro-based HTML templating library that will probably never be developed into anything substantial. It exists solely as an experiment in advanced macro programming.
Links
Github: https://github.com/Stebalien/horrorshow-rs
Docs: horrorshow - Rust
Example
html! {
html {
head {
title { : "Hello world!" }
}
body {
// attributes
h1(id="heading") {
// Insert escaped text
: "Hello! This is <html />"
}
p {
// Insert raw text (unescaped)
! "Let's <i>count</i> to 10!"
}
ol(id="count") {
// run some inline code...
@ for i in 0..10 {
// append to the current template.
append_html! {
li {
// format some text
#{"{}", i+1 }
}
}
}
}
// You need semi-colons for tags without children.
br; br;
p {
: "Easy!"
}
}
}
}
Becomes (white-space added for clarity):
<html>
<head>
<title>Hello world!</title>
</head>
<body>
<h1 id="heading">Hello! This is <html /></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>
Disclaimers
- Attributes must be valid identifiers (so attributes with dashes are currently not supported).
- The documentation is confusing and limited.