summaryrefslogtreecommitdiff
path: root/src/page.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/page.rs')
-rw-r--r--src/page.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/page.rs b/src/page.rs
index 6d788f3..747f243 100644
--- a/src/page.rs
+++ b/src/page.rs
@@ -1,4 +1,6 @@
+use anyhow::{Context, Result};
use maud::{html, Markup, DOCTYPE};
+use minify_html::{minify, Cfg};
pub trait Page: Sized {
fn render_content(self) -> Markup;
@@ -107,4 +109,16 @@ pub trait Page: Sized {
Self::render_navigation()
)(Self::render_content(self)))
}
+
+ fn write_page(self) -> Result<()> {
+ let page_html = self.render_page().into_string();
+ let mut cfg = Cfg::new();
+ cfg.minify_css = true;
+ let minified_html = minify(page_html.as_bytes(), &cfg);
+ let html_path = format!("dist/{}.html", Self::page_title().to_lowercase());
+
+ std::fs::write(&html_path, minified_html)
+ .with_context(|| format!("Failed to write {}", html_path))?;
+ Ok(())
+ }
}