html_to_markdown_rs/
lib.rs1pub mod converter;
7pub mod error;
8pub mod hocr;
9pub mod options;
10pub mod sanitizer;
11pub mod text;
12pub mod wrapper;
13
14pub use error::{ConversionError, Result};
15pub use options::{
16 CodeBlockStyle, ConversionOptions, HeadingStyle, HighlightStyle, ListIndentType, NewlineStyle, ParsingOptions,
17 PreprocessingOptions, PreprocessingPreset, WhitespaceMode,
18};
19
20pub fn convert(html: &str, options: Option<ConversionOptions>) -> Result<String> {
40 let options = options.unwrap_or_default();
41
42 let normalized_html = html.replace("\r\n", "\n").replace('\r', "\n");
43
44 let clean_html = if options.preprocessing.enabled {
45 sanitizer::sanitize(&normalized_html, &options.preprocessing)?
46 } else {
47 normalized_html
48 };
49
50 let markdown = converter::convert_html(&clean_html, &options)?;
51
52 if options.wrap {
53 Ok(wrapper::wrap_markdown(&markdown, &options))
54 } else {
55 Ok(markdown)
56 }
57}