From f3706a440ef56f9635cfb7802216a0c1127b928a Mon Sep 17 00:00:00 2001 From: slhx agent Date: Mon, 1 Jun 2026 22:32:20 +0200 Subject: [PATCH] refactor(v0): use generated render helpers Switch v0 page and payload composition to generated render_html helpers, removing the local render_template bridge while keeping the explicit full-page SafeHtml shell boundary. req: component/003 req: view/001 req: html_safety/002 --- examples/v0/src/main.rs | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/examples/v0/src/main.rs b/examples/v0/src/main.rs index 1339661..86b4ba9 100644 --- a/examples/v0/src/main.rs +++ b/examples/v0/src/main.rs @@ -186,10 +186,11 @@ fn all_examples() -> String { fn shell(body: String) -> String { // Explicit full-page shell composition boundary for already-rendered hemplate fragments. - // req: html_safety/002 req: view/001 - render_template(&AppShell { + // req: html_safety/002 req: view/001 req: component/003 + ui::render_html(&AppShell { body: SafeHtml::trusted(body), }) + .into_string() } fn todos_view(todos: &[Todo]) -> TodoItems { @@ -206,24 +207,17 @@ fn todos_view(todos: &[Todo]) -> TodoItems { } fn render_page_swap(title: &'static str, message: &'static str) -> String { - // req: html_safety/002 req: view/001 - ui::page_swap::lower_html(render_template(&PageSwap { + // req: html_safety/002 req: view/001 req: component/003 + ui::page_swap::render_html(&PageSwap { content: render_docs_content(message), title, - })) + }) + .into_string() } fn render_docs_content(message: &'static str) -> SafeHtml { - // req: html_safety/002 req: view/001 - slhx::render_html(&DocsContent { message }) -} - -fn render_template(template: &impl Hemplate) -> String { - let mut html = String::new(); - template - .render_into(&mut html) - .expect("v0 hemplate view renders"); - html + // req: html_safety/002 req: view/001 req: component/003 + ui::render_html(&DocsContent { message }) } #[cfg(test)] @@ -297,7 +291,7 @@ mod tests { fn todos_payload_is_rendered_by_a_hemplate_view() { let todos = vec![Todo { id: 7, title: "Ship v0".to_owned() }]; - let html = slhx::render_html(&todos_view(&todos)); + let html = ui::render_html(&todos_view(&todos)); let document = Html::parse_fragment(html.as_str()); let rows = document.select(&selector("li[data-key]")).collect::>(); assert_eq!(rows.len(), 1); @@ -309,7 +303,7 @@ mod tests { // req: html_safety/002 req: view/001 req: test/005 #[test] fn empty_todos_payload_is_rendered_by_a_hemplate_view() { - let html = slhx::render_html(&todos_view(&[])); + let html = ui::render_html(&todos_view(&[])); let document = Html::parse_fragment(html.as_str()); let rows = document.select(&selector("li")).collect::>(); assert_eq!(rows.len(), 1);