X-Git-Url: https://git.r.bdr.sh/rbdr/blog/blobdiff_plain/f6a545b00a4046879b7cc25c06c37bb6b6880b43..40a5de55c35d6481fd538f4c5205e47c201e3289:/src/generator/mod.rs diff --git a/src/generator/mod.rs b/src/generator/mod.rs index f0fef75..dbe1c2e 100644 --- a/src/generator/mod.rs +++ b/src/generator/mod.rs @@ -1,28 +1,40 @@ -mod static_files; mod html; mod rss; +mod static_files; mod txt; -use std::io::Result; -use std::path::PathBuf; use crate::post::Post; -use crate::template::TemplateContext; +use crate::template::Context; +use std::io::Result; +use std::path::Path; + +type Generator = fn(&Path, &Path, &Path, &Context) -> Result<()>; -pub fn generate(static_directory: &PathBuf, template_directory: &PathBuf, output_directory: &PathBuf, posts: &Vec) -> Result<()> { +pub fn generate( + static_directory: &Path, + template_directory: &Path, + output_directory: &Path, + posts: &[Post], +) -> Result<()> { let generators = available_generators(); - let context = Post::to_template_context(&posts); + let context = Post::to_template_context(posts); for generator in generators { - generator(static_directory, template_directory, output_directory, &context)?; + generator( + static_directory, + template_directory, + output_directory, + &context, + )?; } Ok(()) } - -fn available_generators() -> Vec Result<()>> { +fn available_generators() -> Vec { vec![ static_files::generate, + // These three are actually the same. Can generalize, don't know how in rust yet. html::generate, rss::generate, - txt::generate + txt::generate, ] }