oseda_cli/templates/
templater.rs1use std::collections::HashMap;
2
3use crate::templates::{
4 html::HtmlRenderer, md::MarkdownRenderer, CLITemplate, Renderer, RendererError,
5};
6
7pub struct Templater {
8 template_type: CLITemplate,
9 params: HashMap<String, String>,
10}
11
12impl Templater {
13 pub fn new(template_type: CLITemplate, params: HashMap<String, String>) -> Self {
14 Self {
15 template_type,
16 params,
17 }
18 }
19
20 pub fn update_template(&self, text: &str) -> String {
21 let mut update_me = String::from(text);
22 self.params.iter().for_each(|(key, value)| {
23 update_me = update_me.replace(&format!("{{{{ {key} }}}}"), value);
25 });
26
27 update_me
28 }
29}
30
31impl Renderer for Templater {
32 fn write_to_fs(&self, target_dir: &str) -> Result<(), RendererError> {
33 match self.template_type {
34 CLITemplate::HTML => {
35 let renderer = HtmlRenderer {
36 params: self.params.clone(),
37 };
38 renderer.write_to_fs(target_dir)
39 }
40 CLITemplate::Markdown => {
41 let renderer = MarkdownRenderer {
42 params: self.params.clone(),
43 };
44 renderer.write_to_fs(target_dir)
45 }
46 }
47 }
48}