summaryrefslogtreecommitdiff
path: root/src/works
diff options
context:
space:
mode:
Diffstat (limited to 'src/works')
-rw-r--r--src/works/stories.rs35
1 files changed, 26 insertions, 9 deletions
diff --git a/src/works/stories.rs b/src/works/stories.rs
index c68745a..ccc01e0 100644
--- a/src/works/stories.rs
+++ b/src/works/stories.rs
@@ -5,26 +5,43 @@ use serde::{Deserialize, Serialize};
// derive from JSON
// process to context for HTML
#[derive(Debug, Deserialize, Serialize)]
-pub struct Stories(pub Vec<Story>);
+pub struct Stories(Vec<Story>);
#[derive(Debug, Deserialize, Serialize)]
-pub struct Story {
- pub title: String,
- pub description: String,
- pub path_to_document: String,
- pub number_of_pages: u16,
- pub language: Language,
- pub last_update: NaiveDate,
+struct Story {
+ title: String,
+ description: String,
+ path_to_document: String,
+ number_of_pages: u16,
+ language: Language,
+ last_update: NaiveDate,
}
// see src/works/mod.rs for information of Works trait
impl super::Works for Stories {
+ // render single pages for every story with the extracted text and a download button
fn render_single_pages(
&self,
tera_instance: &tera::Tera,
template_name: &str,
) -> anyhow::Result<()> {
- !unimplemented!()
+ // TODO: Extract story pdf text
+ let mut result = Vec::new();
+ for story in self.0.iter() {
+ let mut context = tera::Context::new();
+ context.insert("story", story);
+ result.push(std::fs::write(
+ format!(
+ // use story document name for the single page
+ // e.g. mit_gutem_gewissen.pdf -> mit_gutem_gewissen.html
+ "docs/stories/{}.html",
+ story.path_to_document.replace(".pdf", "")
+ )
+ .as_str(),
+ tera_instance.render(format!("{}.html", template_name).as_str(), &context)?,
+ ));
+ }
+ Ok(())
}
}