use pulldown_cmark::{html, Options, Parser}; pub fn render_markdown(input: &str) -> String { let mut options = Options::empty(); options.insert(Options::ENABLE_TABLES); options.insert(Options::ENABLE_TASKLISTS); options.insert(Options::ENABLE_STRIKETHROUGH); options.insert(Options::ENABLE_FOOTNOTES); let parser = Parser::new_ext(input, options); let mut html_output = String::new(); html::push_html(&mut html_output, parser); html_output } #[cfg(test)] mod tests { use super::*; #[test] fn renders_headings_and_paragraphs() { let md = "# Hello\n\nThis is a paragraph."; let html = render_markdown(md); assert!(html.contains("
This is a paragraph.
")); } #[test] fn renders_tasklists() { let md = "- [x] Done\n- [ ] Todo"; let html = render_markdown(md); assert!(html.contains("")); assert!(html.contains("