2 releases
0.1.1 | Jan 17, 2024 |
---|---|
0.1.0 | Jan 6, 2024 |
#161 in Template engine
34 downloads per month
15KB
421 lines
hyped
hyped offers an ergonomic way to render html from plain rust functions
cargo add hyped
Write some html
use hyped::*;
fn render_to_string(element: Element) -> String {
render((
doctype(),
html((
head((title("title"), meta().charset("utf-8"))),
body(element)
))
))
}
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(
render_to_string(div("hyped")),
"<!DOCTYPE html><html><head><title>title</title></head><body><div>hyped</div></body></html>"
)
}
}
Custom attributes
use hyped::*;
fn htmx_input() -> Element {
input()
.attr("hx-post", "/")
.attr("hx-target", ".target")
.attr("hx-swap", "outerHTML")
.attr("hx-push-url", "false")
}
fn main() {
let html: String = render(htmx_input());
// html == <input hx-post="/" hx-target=".target" hx-swap="outerHTML" hx-push-url="false">
}
Custom elements
use hyped::*;
fn turbo_frame(children: Element) -> Element {
element("turbo-frame", children)
}
fn main() {
let html: String = render(turbo_frame(div("inside turbo frame")).id("id"));
// html ==
// <turbo-frame id="id">
// <div>inside turbo frame</div>
// </turbo-frame>
}