Skip to content

swlkr/hyped

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4f49761 · Feb 7, 2024

History

21 Commits
Feb 7, 2024
Jan 3, 2024
Feb 7, 2024
Feb 7, 2024
Feb 7, 2024
Jan 4, 2024
Jan 7, 2024

Repository files navigation

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>
}

About

Write html using plain rust functions

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages