diff --git a/src/main.rs b/src/main.rs index fb22a04..4af4e78 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ mod config; mod entries; +mod render; fn main() { let config = config::Config::load("config.toml").expect("failed to load config.toml"); diff --git a/src/render.rs b/src/render.rs new file mode 100644 index 0000000..da2e3c8 --- /dev/null +++ b/src/render.rs @@ -0,0 +1,119 @@ +use crate::entries::Entry; + +pub fn render_page(site_title: &str, site_url: &str, entries: &[Entry], form_html: &str) -> String { + let nav_url = site_url.trim_end_matches('/'); + let mut html = format!( + r#" + +
+ + +If you visited my site, please sign my guestbook!
+{form_html} +"# + ); + + for entry in entries { + html.push_str(&render_entry(entry)); + } + + html.push_str("\n\n"); + html +} + +fn render_entry(entry: &Entry) -> String { + let mut header = format!("{} - {}", entry.meta.date, entry.meta.name); + if !entry.meta.website.is_empty() { + header.push_str(&format!( + " ({})", + entry.meta.website, entry.meta.website + )); + } + header.push_str("
\n"); + format!("{header} {}\n