diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/main.rs b/src/main.rs index af00d3f..e82cfae 100644 --- a/src/main.rs +++ b/src/main.rs @@ -234,7 +234,7 @@ async fn service<C: Controller>( ); Builder::new() .content_type(mime::TEXT_HTML) - .body(render_page(&page).into()) + .body(page.render().into()) .unwrap() } }) @@ -272,21 +272,23 @@ pub struct Page { frame_src: Option<&'static str>, } -fn render_page(page: &Page) -> String { - let mut out = String::new(); - out.push_str("<!doctype html><html><head><meta charset=utf-8>"); - out.push_str(&format!("<title>{}</title>", html_escape(&page.title))); - out.push_str("<meta name=viewport content=\"width=device-width, initial-scale=1\"><style>"); - out.push_str(include_str!("static/style.css")); - out.push_str("</style></head><body><header id=header>"); - out.push_str(&page.header); - out.push_str("</header>"); - out.push_str(&page.body); - for script in &page.scripts { - out.push_str(&format!("<script>{}</script>", script)); +impl Page { + fn render(&self) -> String { + let mut out = String::new(); + out.push_str("<!doctype html><html><head><meta charset=utf-8>"); + out.push_str(&format!("<title>{}</title>", html_escape(&self.title))); + out.push_str("<meta name=viewport content=\"width=device-width, initial-scale=1\"><style>"); + out.push_str(include_str!("static/style.css")); + out.push_str("</style></head><body><header id=header>"); + out.push_str(&self.header); + out.push_str("</header>"); + out.push_str(&self.body); + for script in &self.scripts { + out.push_str(&format!("<script>{}</script>", script)); + } + out.push_str("</body></html>"); + out } - out.push_str("</body></html>"); - out } #[derive(Deserialize)] |