From edd804a505e3036d1b918ac149325dbb659c9151 Mon Sep 17 00:00:00 2001 From: slhx agent Date: Mon, 1 Jun 2026 22:50:01 +0200 Subject: [PATCH] refactor(techdemo): use generated render helpers throughout Route shell, architecture, inspector, hero, activity, and live-feed rendering through generated render_html helpers, removing the last local render_template bridge from the techdemo page composition path. req: component/003 req: view/001 req: html_safety/002 --- examples/techdemo/src/main.rs | 39 ++++++++++++++--------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/examples/techdemo/src/main.rs b/examples/techdemo/src/main.rs index aa95300..9c3b2a6 100644 --- a/examples/techdemo/src/main.rs +++ b/examples/techdemo/src/main.rs @@ -143,7 +143,7 @@ struct AppShell { #[derive(Hemplate)] #[hemplate = "partials"] struct InspectorPanel { - selected: String, + selected: SafeHtml, spotlight: String, } @@ -460,8 +460,8 @@ fn page_html(demo: &DemoState) -> 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 { body: SafeHtml::trusted(body) }) + // req: html_safety/002 req: view/001 req: component/003 + ui::app_shell::render_html(&AppShell { body: SafeHtml::trusted(body) }).into_string() } fn hero_view(demo: &DemoState) -> HeroMetrics { @@ -478,8 +478,8 @@ fn hero_view(demo: &DemoState) -> HeroMetrics { } fn render_hero(demo: &DemoState) -> SafeHtml { - // req: html_safety/002 req: view/001 - slhx::render_html(&hero_view(demo)) + // req: html_safety/002 req: view/001 req: component/003 + ui::render_html(&hero_view(demo)) } fn board_view(demo: &DemoState) -> BoardLanes { @@ -534,8 +534,8 @@ fn activity_view(demo: &DemoState) -> ActivityFeed { } fn render_activity(demo: &DemoState) -> SafeHtml { - // req: html_safety/002 req: view/001 - slhx::render_html(&activity_view(demo)) + // req: html_safety/002 req: view/001 req: component/003 + ui::render_html(&activity_view(demo)) } fn inspector_view(demo: &DemoState) -> InspectorPanel { @@ -544,9 +544,9 @@ fn inspector_view(demo: &DemoState) -> InspectorPanel { .selected_id .and_then(|id| demo.work.iter().find(|item| item.id == id)); let selected = selected.map_or_else( - || render_template(&InspectorEmpty), + || ui::render_html(&InspectorEmpty), |item| { - render_template(&InspectorSelected { + ui::render_html(&InspectorSelected { title: item.title.clone(), lane: LANES[item.lane].1, stage: item.stage.label(), @@ -561,28 +561,28 @@ fn inspector_view(demo: &DemoState) -> InspectorPanel { } fn render_inspector(demo: &DemoState) -> SafeHtml { - // req: html_safety/002 req: view/001 - slhx::render_html(&inspector_view(demo)) + // req: html_safety/002 req: view/001 req: component/003 + ui::render_html(&inspector_view(demo)) } fn architecture_hero() -> SafeHtml { // req: html_safety/002 req: view/001 - slhx::render_html(&ArchitectureHero) + ui::render_html(&ArchitectureHero) } fn architecture_board() -> SafeHtml { // req: html_safety/002 req: view/001 - slhx::render_html(&ArchitectureBoard) + ui::render_html(&ArchitectureBoard) } fn architecture_inspector() -> SafeHtml { // req: html_safety/002 req: view/001 - slhx::render_html(&ArchitectureInspector) + ui::render_html(&ArchitectureInspector) } fn architecture_activity() -> SafeHtml { // req: html_safety/002 req: view/001 - slhx::render_html(&ArchitectureActivity) + ui::render_html(&ArchitectureActivity) } fn render_control_center(page: ControlCenter) -> String { @@ -590,13 +590,6 @@ fn render_control_center(page: ControlCenter) -> String { ui::render_html(&page).into_string() } -fn render_template(template: &impl Hemplate) -> String { - let mut html = String::new(); - template - .render_into(&mut html) - .expect("techdemo hemplate partial renders"); - html -} #[cfg(test)] mod tests { @@ -712,7 +705,7 @@ mod tests { // req: html_safety/002 req: view/001 req: test/005 #[test] fn live_feed_payload_is_rendered_by_a_hemplate_view() { - let html = slhx::render_html(&LiveFeed { tick: 7 }); + let html = ui::render_html(&LiveFeed { tick: 7 }); let document = Html::parse_fragment(html.as_str()); let row = document .select(&selector(".live-row"))