add part function
All checks were successful
CI/CD Pipeline / deploy-main (push) Has been skipped

This commit is contained in:
2024-02-20 13:03:06 +01:00
parent 4766c00c9b
commit 4a6c986a66
8 changed files with 102 additions and 110 deletions

View File

@ -2,6 +2,8 @@ use std::fs;
use risp::law::{Content, Heading, HeadingContent, Law, Section};
use crate::part::Parts;
fn print_content(content: Content) -> String {
let mut ret = String::new();
@ -114,6 +116,8 @@ pub(crate) fn create_law_files() -> String {
.replace("{{content}}", &content)
.replace("{{title}}", &lawname);
let site = Parts::new().perform(site);
li_of_files.push_str(&format!(
"<li><a href='./{law_name}' title='{law_name}' class='contrast'>{lawname}</a></li>"
));

View File

@ -1,6 +1,9 @@
use std::{fs, path::Path};
use part::Parts;
mod law;
mod part;
fn main() {
fs::create_dir_all("./output").unwrap();
@ -15,6 +18,7 @@ fn main() {
fn create_index(content: &str) {
let mut index = fs::read_to_string("templates/index.html").unwrap();
index = index.replace("{{content}}", content);
let index = Parts::new().perform(index);
fs::write("output/index.html", &index).expect("Unable to write file");
}

33
src/part.rs Normal file
View File

@ -0,0 +1,33 @@
use std::{collections::HashMap, fs, path::Path};
pub(crate) struct Parts {
parts: HashMap<String, String>,
}
impl Parts {
pub(crate) fn new() -> Self {
let mut parts = HashMap::new();
let parts_path = Path::new("templates/parts");
for part in fs::read_dir(parts_path).expect("No templates/parts folder") {
let part = part.unwrap();
let filename = format!("{}", part.file_name().into_string().unwrap());
let filename = filename.replace(".html", "");
let path = format!("{}", part.path().display());
let template = fs::read_to_string(path).unwrap();
parts.insert(filename, template);
}
Self { parts }
}
pub(crate) fn perform(&self, input: String) -> String {
let mut input = input;
for (key, value) in &self.parts {
let replace = format!("{{{{{}}}}}", key);
println!("{replace}");
input = input.replace(&replace, value);
}
input
}
}