aboutsummaryrefslogtreecommitdiff
path: root/src/generator
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2024-03-08 14:53:01 +0100
committerRuben Beltran del Rio <git@r.bdr.sh>2024-03-08 14:53:01 +0100
commitf6a545b00a4046879b7cc25c06c37bb6b6880b43 (patch)
treebc7da8066c080ff850d1e423c0e33bd5fb83e095 /src/generator
parent2998247083406f914b3647cedd19abf5507bf2c6 (diff)
Use serde and time
Diffstat (limited to 'src/generator')
-rw-r--r--src/generator/html.rs10
-rw-r--r--src/generator/mod.rs6
-rw-r--r--src/generator/rss.rs11
-rw-r--r--src/generator/static_files.rs4
-rw-r--r--src/generator/txt.rs11
5 files changed, 27 insertions, 15 deletions
diff --git a/src/generator/html.rs b/src/generator/html.rs
index 0b258bf..cff4aea 100644
--- a/src/generator/html.rs
+++ b/src/generator/html.rs
@@ -1,16 +1,12 @@
use std::io::Result;
use std::path::PathBuf;
-use crate::post::Post;
-use crate::template::{find, parse};
+use crate::template::{find, parse, TemplateContext};
-pub fn generate(_: &PathBuf, template_directory: &PathBuf, _: &PathBuf, _: &Vec<Post>) -> Result<()> {
- println!("READING TEMP");
+pub fn generate(_: &PathBuf, template_directory: &PathBuf, _: &PathBuf, context: &TemplateContext) -> Result<()> {
match find(template_directory, "index.html") {
Some(template) => {
let parsed_template = parse(&template);
- for token in parsed_template.tokens {
- println!("TOKEN {}", token);
- }
+ println!("TOKEN {}", parsed_template.render(context));
},
None => {}
}
diff --git a/src/generator/mod.rs b/src/generator/mod.rs
index c4bf1e1..f0fef75 100644
--- a/src/generator/mod.rs
+++ b/src/generator/mod.rs
@@ -6,17 +6,19 @@ mod txt;
use std::io::Result;
use std::path::PathBuf;
use crate::post::Post;
+use crate::template::TemplateContext;
pub fn generate(static_directory: &PathBuf, template_directory: &PathBuf, output_directory: &PathBuf, posts: &Vec<Post>) -> Result<()> {
let generators = available_generators();
+ let context = Post::to_template_context(&posts);
for generator in generators {
- generator(static_directory, template_directory, output_directory, posts)?;
+ generator(static_directory, template_directory, output_directory, &context)?;
}
Ok(())
}
-fn available_generators() -> Vec<fn(&PathBuf, &PathBuf, &PathBuf, &Vec<Post>) -> Result<()>> {
+fn available_generators() -> Vec<fn(&PathBuf, &PathBuf, &PathBuf, &TemplateContext) -> Result<()>> {
vec![
static_files::generate,
html::generate,
diff --git a/src/generator/rss.rs b/src/generator/rss.rs
index dab7e50..5ed9f5c 100644
--- a/src/generator/rss.rs
+++ b/src/generator/rss.rs
@@ -1,7 +1,14 @@
use std::io::Result;
use std::path::PathBuf;
-use crate::post::Post;
+use crate::template::{find, parse, TemplateContext};
-pub fn generate(_: &PathBuf, _: &PathBuf, _: &PathBuf, _: &Vec<Post>) -> Result<()> {
+pub fn generate(_: &PathBuf, template_directory: &PathBuf, _: &PathBuf, context: &TemplateContext) -> Result<()> {
+ match find(template_directory, "feed.xml") {
+ Some(template) => {
+ let parsed_template = parse(&template);
+ println!("TOKEN {}", parsed_template.render(context));
+ },
+ None => {}
+ }
Ok(())
}
diff --git a/src/generator/static_files.rs b/src/generator/static_files.rs
index 6804800..50f56d8 100644
--- a/src/generator/static_files.rs
+++ b/src/generator/static_files.rs
@@ -1,7 +1,7 @@
use std::fs::{copy, create_dir_all, read_dir};
use std::io::Result;
use std::path::PathBuf;
-use crate::post::Post;
+use crate::template::TemplateContext;
fn recursively_copy(source: &PathBuf, target: &PathBuf) -> Result<()> {
let entries = read_dir(source)?;
@@ -23,7 +23,7 @@ fn recursively_copy(source: &PathBuf, target: &PathBuf) -> Result<()> {
Ok(())
}
-pub fn generate(source: &PathBuf, _: &PathBuf, target: &PathBuf, _: &Vec<Post>) -> Result<()> {
+pub fn generate(source: &PathBuf, _: &PathBuf, target: &PathBuf, _: &TemplateContext) -> Result<()> {
if source.exists() {
return recursively_copy(source, target)
}
diff --git a/src/generator/txt.rs b/src/generator/txt.rs
index dab7e50..ec96420 100644
--- a/src/generator/txt.rs
+++ b/src/generator/txt.rs
@@ -1,7 +1,14 @@
use std::io::Result;
use std::path::PathBuf;
-use crate::post::Post;
+use crate::template::{find, parse, TemplateContext};
-pub fn generate(_: &PathBuf, _: &PathBuf, _: &PathBuf, _: &Vec<Post>) -> Result<()> {
+pub fn generate(_: &PathBuf, template_directory: &PathBuf, _: &PathBuf, context: &TemplateContext) -> Result<()> {
+ match find(template_directory, "index.txt") {
+ Some(template) => {
+ let parsed_template = parse(&template);
+ println!("TOKEN {}", parsed_template.render(context));
+ },
+ None => {}
+ }
Ok(())
}