5 releases (3 breaking)
0.3.1 | Aug 8, 2024 |
---|---|
0.3.0 | Aug 8, 2024 |
0.2.0 | Aug 7, 2024 |
0.1.0 | Aug 7, 2024 |
0.0.1 | Aug 7, 2024 |
#518 in Rust patterns
18KB
178 lines
Rempl
About
Rempl is a simple library that adds two macros to allow you to make functions that return html easily by embedding the html directly in your source code. No templates required!
Installation
To get started with rempl simply run
$ cargo add rempl
in your terminal.
Features
Rempl adds two simple macros. First, the html!
macro which allows you to create html sections directly within your rust source. Example:
let classes = vec!["bg-red", "b-solid"];
let msg = "Hello, world";
html! {
<p class={ classes.join(" ") }>{ msg }</p>
}
As you can see, you can pass any rust expression as an HTML element attribute, or if it implments the Display
trait, directly in the html itself.
The second macro is the component
macro, which allows you to create custom html tags, that you can call within your html!
invocations. Example:
fn Echo(class: String, children: HtmlNode) -> HtmlTerm {
html! {
<p class={ class }>{ children }</p>
}
}
fn main() {
let r = html! {
<@Echo class="Test">
"Hello, world!"
</Echo>
}
}
Components can be called by using putting a @
in front of the tag name, any attributes will be passed as parameters to the function, except for the inner html of the tag, which will be passed in the required children
parameter.
You can render your html output to a String
by simpling calling .to_string()
on the HtmlTerm
.
Features
If you're running a nightly compiler, you can enable the nightly
feature to enable
some better diagnositics when writing invalid HTML.
License
This project is licensed under the Mozilla Public License which you can find here (LICENSE) or https://www.mozilla.org/en-US/MPL/2.0/.
Dependencies
~260–710KB
~17K SLoC