diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/src/main.rs b/src/main.rs index f125e7b..d5f6fea 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,21 +13,46 @@ struct File { content: String, } +fn meta_data_extractor(content: &str) -> (String, String, String) { + let lines = content.lines(); + let mut date: String = "".to_string(); + let mut title: String = "".to_string(); + let mut desc: String = "".to_string(); + + for line in lines { + let meta_data = line.split('=').collect::<Vec<&str>>(); + match meta_data[0] { + "date" => date = meta_data[1].to_string(), + "title" => title = meta_data[1].to_string(), + "description" => desc = meta_data[1].to_string(), + &_ => println!(""), + } + } + + return (date, title, desc); +} + fn markdown_to_html(path: String, content: String) -> File { let mut end: usize = 0; if &content[0..3] != "+++" { println!("It doesnt pass"); } - let end = content[3..].find("+++").unwrap(); + let end_wrapped = content[3..].find("+++"); + + if Some(end_wrapped) == Some(None) { + println!("It doesnt pass"); + } - // if Some(end) == Some(None) { - // println!("It doesnt pass"); - // } + let end = end_wrapped.unwrap(); + let meta_data = &content[3..end + 2]; - let meta_data = &content[3..end]; + let date: String; + let title: String; + let description: String; - println!("{meta_data}\n\n"); + meta_data_extractor(meta_data); + // println!("{meta_data}\n\n"); let html = markdown::to_html(&content[end + 7..]); let file_name = std::path::Path::new(&path).file_name().unwrap(); @@ -52,8 +77,8 @@ fn main() { let contents_read = fs::read_to_string(path).unwrap(); let f: File = markdown_to_html(path.to_string(), contents_read); - println!( - "file_name: {}\npath:{}\ncontent:\n{}", - f.file_name, f.parent_directory, f.content - ); + // println!( + // "file_name: {}\npath:{}\ncontent:\n{}", + // f.file_name, f.parent_directory, f.content + // ); } |
