use pulldown_cmark::{html, Parser}; pub struct Theme { root_path: String, parser_options: pulldown_cmark::Options, } impl Theme { pub fn new(root_path: String) -> Self { let mut parser_options = pulldown_cmark::Options::empty(); parser_options.insert(pulldown_cmark::Options::ENABLE_STRIKETHROUGH); parser_options.insert(pulldown_cmark::Options::ENABLE_TABLES); parser_options.insert(pulldown_cmark::Options::ENABLE_FOOTNOTES); Theme { root_path, parser_options, } } // Renders markdown as html pub fn markdown_as_html(&self, path: &String) -> Result { log::trace!("Rendering file '{}'", path); let path = format!("{}.md", path); let file = std::fs::read_to_string(&path); match file { Ok(content) => { let parser = Parser::new_ext(content.as_str(), self.parser_options); let mut html_output = String::new(); html::push_html(&mut html_output, parser); Ok(html_output) } Err(error) => { log::error!("File located at path {} was not found.", path); Err(error.to_string()) } } } }