diff --git a/site/templates/basic-link-list.tera b/site/templates/basic-link-list.tera
index a07f12c..843eb89 100644
--- a/site/templates/basic-link-list.tera
+++ b/site/templates/basic-link-list.tera
@@ -1,3 +1,5 @@
+{% extends "base.tera" %}
+{% block content %}
{{ title }}
@@ -6,3 +8,4 @@
{% endfor %}
+{% endblock content %}
diff --git a/site/templates/blog-list.tera b/site/templates/blog-list.tera
index 0836220..925eb80 100644
--- a/site/templates/blog-list.tera
+++ b/site/templates/blog-list.tera
@@ -1,3 +1,5 @@
+{% extends "base.tera" %}
+{% block content %}
{% if tag %}
blog posts tagged {{tag}}
View all blog posts
@@ -22,3 +24,4 @@
{% endfor %}
+{% endblock content %}
diff --git a/site/templates/blog-post.tera b/site/templates/blog-post.tera
index e9a4453..32e1e62 100644
--- a/site/templates/blog-post.tera
+++ b/site/templates/blog-post.tera
@@ -1,3 +1,5 @@
+{% extends "base.tera" %}
+{% block content %}
{{title}}
published {{timestamp}}
@@ -20,3 +22,4 @@
{% endfor %}
+{% endblock content %}
diff --git a/src/builder.rs b/src/builder.rs
index ea1491e..e3ce38e 100644
--- a/src/builder.rs
+++ b/src/builder.rs
@@ -246,16 +246,8 @@ impl SiteBuilder {
Ok(String::from_utf8(output)?)
}
- pub fn build_page_raw(
- &self,
- page_metadata: PageMetadata,
- page_html: &str,
- ) -> eyre::Result {
- self.build_page_raw_with_extra_data(page_metadata, page_html, ())
- }
-
/// Helper to build a page without writing it to disk.
- pub fn build_page_raw_with_extra_data(
+ pub fn build_page_raw(
&self,
mut page_metadata: PageMetadata,
page_html: &str,
@@ -318,7 +310,7 @@ impl SiteBuilder {
let mut page_html = String::new();
pulldown_cmark::html::push_html(&mut page_html, parser);
- let out = self.build_page_raw(page.data.unwrap_or_default(), &page_html)?;
+ let out = self.build_page_raw(page.data.unwrap_or_default(), &page_html, ())?;
let out_path = self.build_path.join(page_name).with_extension("html");
std::fs::create_dir_all(out_path.parent().unwrap())
diff --git a/src/link_list.rs b/src/link_list.rs
index 88d1f5b..5dcfaad 100644
--- a/src/link_list.rs
+++ b/src/link_list.rs
@@ -29,18 +29,15 @@ pub fn render_basic_link_list(
links: Vec,
title: &str,
) -> eyre::Result {
- let data = LinkTemplateData { links, title };
- let out = builder
- .tera
- .render(template, &tera::Context::from_serialize(data)?)?;
- let out = builder.build_page_raw(
+ builder.build_page_raw(
PageMetadata {
+ template: Some(template.to_owned()),
title: Some(title.to_owned()),
..Default::default()
},
- &out,
- )?;
- Ok(out)
+ "",
+ LinkTemplateData { links, title },
+ )
}
/// Template data for a list of links.
diff --git a/src/resource.rs b/src/resource.rs
index 2165345..4ece979 100644
--- a/src/resource.rs
+++ b/src/resource.rs
@@ -128,11 +128,6 @@ struct ResourceListTemplateData<'r> {
next: Option,
}
-#[derive(Debug, Serialize)]
-struct ExtraResourceRenderData {
- head: String,
-}
-
/// Config for the resource builder.
#[derive(Debug, Clone, Default, Deserialize)]
pub struct ResourceBuilderConfig {
@@ -254,26 +249,12 @@ impl ResourceBuilder {
resource: &ResourceMetadata,
) -> eyre::Result<()> {
let out_path = self.build_path(&builder.build_path, &id);
- let out = {
- let data = ResourceTemplateData {
- resource,
- id,
- timestamp: resource.timestamp,
- };
- builder.tera.render(
- &self.config.resource_template,
- &tera::Context::from_serialize(data)?,
- )?
- };
- let out = builder.build_page_raw_with_extra_data(
+ let out = builder.build_page_raw(
PageMetadata {
+ template: Some(self.config.resource_template.clone()),
title: Some(resource.title.clone()),
- ..Default::default()
- },
- &out,
- ExtraResourceRenderData {
- head: EmbedMetadata {
+ embed: Some(EmbedMetadata {
title: resource.title.clone(),
site_name: builder.site.config.title.clone(),
description: resource.desc.clone(),
@@ -285,8 +266,14 @@ impl ResourceBuilder {
url: None,
theme_color: EmbedMetadata::default_theme_color(),
large_image: true,
- }
- .build(),
+ }),
+ ..Default::default()
+ },
+ "",
+ ResourceTemplateData {
+ resource,
+ id,
+ timestamp: resource.timestamp,
},
)?;
std::fs::write(out_path, out)?;
@@ -338,24 +325,21 @@ impl ResourceBuilder {
let mut next;
for (page, iter) in list.iter().chunks(items_per_page).into_iter().enumerate() {
next = (page + 1 != page_max).then_some(page + 2);
- let data = ResourceListTemplateData {
- resources: iter.copied().collect(),
- tag,
- page: page + 1,
- page_max,
- previous,
- next,
- };
- let out = builder.tera.render(
- &config.resource_list_template,
- &tera::Context::from_serialize(data)?,
- )?;
let out = builder.build_page_raw(
PageMetadata {
+ template: Some(config.resource_list_template.clone()),
title: Some(title.to_owned()),
..Default::default()
},
- &out,
+ "",
+ ResourceListTemplateData {
+ resources: iter.copied().collect(),
+ tag,
+ page: page + 1,
+ page_max,
+ previous,
+ next,
+ },
)?;
if page == 0 {
std::fs::write(out_path.join("index.html"), &out)?;