diff options
| author | sigoden <sigoden@gmail.com> | 2024-09-06 08:08:55 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-06 08:08:55 +0800 |
| commit | 555f4f5d128d018912144b0e7f2b3a50223bf713 (patch) | |
| tree | 46c72e49bb34817fcee1bece140831c11b1580e0 /src/utils/html_to_md.rs | |
| parent | 791b6150afd626baabc2d71acc1dc3dcb70ad4d0 (diff) | |
| download | aichat-555f4f5d128d018912144b0e7f2b3a50223bf713.tar.gz | |
feat: better html to markdown converter (#840)
Diffstat (limited to 'src/utils/html_to_md.rs')
| -rw-r--r-- | src/utils/html_to_md.rs | 18 |
1 files changed, 18 insertions, 0 deletions
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<TagHandler> = 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()) +} |
