summaryrefslogtreecommitdiff
path: root/src/page.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/page.rs')
-rw-r--r--src/page.rs18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/page.rs b/src/page.rs
index ed2e0a5..6f3331f 100644
--- a/src/page.rs
+++ b/src/page.rs
@@ -3,7 +3,7 @@ use maud::{html, Markup, DOCTYPE};
use minify_html::{minify, Cfg};
pub trait Page: Sized {
- fn render_content(self) -> Markup;
+ fn render_content(&self) -> Markup;
fn page_title() -> String;
fn render_head() -> Markup {
html!(
@@ -83,6 +83,8 @@ pub trait Page: Sized {
}
}
+
+
"""
)
}
@@ -100,19 +102,22 @@ pub trait Page: Sized {
)
}
- fn render_page(self) -> Markup {
+ fn render_page(&self) -> Markup {
html!((Self::render_head())(Self::style())(
Self::render_navigation()
)(Self::render_content(self)))
}
- fn write_page(mut self) -> Result<()> {
+ fn write_page(&mut self) -> Result<()> {
self.prepare_content()?;
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());
+ let html_path = format!(
+ "dist/{}.html",
+ Self::alternative_htmlfilename().unwrap_or(Self::page_title().to_lowercase())
+ );
std::fs::write(&html_path, minified_html)
.with_context(|| format!("Failed to write {}", html_path))?;
@@ -123,4 +128,9 @@ pub trait Page: Sized {
fn prepare_content(&mut self) -> Result<()> {
Ok(())
}
+
+ // without ".html"
+ fn alternative_htmlfilename() -> Option<String> {
+ None
+ }
}