From 555f4f5d128d018912144b0e7f2b3a50223bf713 Mon Sep 17 00:00:00 2001 From: sigoden Date: Fri, 6 Sep 2024 08:08:55 +0800 Subject: feat: better html to markdown converter (#840) --- src/utils/html_to_md.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/utils/html_to_md.rs (limited to 'src/utils/html_to_md.rs') diff --git a/src/utils/html_to_md.rs b/src/utils/html_to_md.rs new file mode 100644 index 0000000..2bc5e54 --- /dev/null +++ b/src/utils/html_to_md.rs @@ -0,0 +1,18 @@ +use std::{cell::RefCell, rc::Rc}; + +use html_to_markdown::{markdown, TagHandler}; + +pub fn html_to_md(html: &str) -> String { + let mut handlers: Vec = vec![ + Rc::new(RefCell::new(markdown::ParagraphHandler)), + Rc::new(RefCell::new(markdown::HeadingHandler)), + Rc::new(RefCell::new(markdown::ListHandler)), + Rc::new(RefCell::new(markdown::TableHandler::new())), + Rc::new(RefCell::new(markdown::StyledTextHandler)), + Rc::new(RefCell::new(markdown::CodeHandler)), + Rc::new(RefCell::new(markdown::WebpageChromeRemover)), + ]; + + html_to_markdown::convert_html_to_markdown(html.as_bytes(), &mut handlers) + .unwrap_or_else(|_| html.to_string()) +} -- cgit v1.2.3