3 个版本 (破坏性更新)

0.3.0 2023 年 4 月 26 日
0.2.0 2021 年 8 月 27 日
0.1.0 2021 年 6 月 7 日

#11 in #html-content


用于 trillium-cli

MIT/Apache 协议

26KB
69

使用 lol-html 库和 lol_async 库重写 HTML 的 trillium 处理器。

此 crate 当前需要配置运行时,很遗憾。请使用以下功能之一:`async-std`、`smol` 或 `tokio`。不要使用默认功能,它可能会随时更改。

use trillium_html_rewriter::{
    html::{element, html_content::ContentType, Settings},
    HtmlRewriter,
};

let handler = (
    |conn: trillium::Conn| async move {
        conn.with_header(("content-type", "text/html"))
            .with_status(200)
            .with_body("<html><body><p>body</p></body></html>")
    },
    HtmlRewriter::new(|| Settings {
        element_content_handlers: vec![element!("body", |el| {
            el.prepend("<h1>title</h1>", ContentType::Html);
            Ok(())
        })],
         ..Settings::default()
    }),
);

# async_global_executor::block_on(async move {
use trillium_testing::prelude::*;

let conn = async_global_executor::spawn(async move {
    get("/").run_async(&handler).await
}).await;

assert_ok!(conn, "<html><body><h1>title</h1><p>body</p></body></html>");
# });

依赖项

~12–27MB
~424K SLoC