use html_generator::{generate_html, HtmlConfig};
use std::collections::HashMap;
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("\n๐ฆ Welcome to the Batch Processing Markdown to HTML Example!");
println!("================================================================");
let basic_sources: HashMap<&str, &str> = vec![
(
"๐ Amps and Angle Encoding",
include_str!("./basic/amps-and-angle-encoding.txt"),
),
(
"๐ Angle Links and Images",
include_str!("./basic/angle-links-and-img.txt"),
),
("๐ Auto Links", include_str!("./basic/auto-links.txt")),
(
"๐ฏ Backlash Escapes",
include_str!("./basic/backlash-escapes.txt"),
),
(
"๐ Blockquotes with Code Blocks",
include_str!("./basic/blockquotes-with-code-blocks.txt"),
),
(
"๐ก Code Syntax Highlighting",
include_str!("./basic/code_syntax_highlighting.txt"),
),
(
"๐ข Code Block in List",
include_str!("./basic/codeblock-in-list.txt"),
),
(
"๐ฆ Custom Containers",
include_str!("./basic/custom_containers.txt"),
),
("๐ต๏ธโโ๏ธ Edge Cases", include_str!("./basic/edge_cases.txt")),
(
"๐ Emoji Content",
include_str!("./basic/emoji_content.txt"),
),
(
"๐ฉ Escaped Characters",
include_str!("./basic/escaped_characters.txt"),
),
(
"โฉ Hard Wrapped Lines",
include_str!("./basic/hard-wrapped.txt"),
),
(
"โค Horizontal Rules",
include_str!("./basic/horizontal-rules.txt"),
),
(
"๐ Large Markdown File",
include_str!("./basic/large_markdown.txt"),
),
("๐ Inline Links", include_str!("./basic/links-inline.txt")),
(
"๐ Reference Links",
include_str!("./basic/links-reference.txt"),
),
(
"๐จ๏ธ Literal Quotes",
include_str!("./basic/literal-quotes.txt"),
),
(
"๐ Markdown Basics",
include_str!("./basic/markdown-documentation-basics.txt"),
),
(
"๐ Markdown Syntax",
include_str!("./basic/markdown-syntax.txt"),
),
(
"๐จ๏ธ Nested Blockquotes",
include_str!("./basic/nested-blockquotes.txt"),
),
(
"๐ข Ordered and Unordered Lists",
include_str!("./basic/ordered-and-unordered-list.txt"),
),
(
"๐ช Strong and Emphasis Together",
include_str!("./basic/strong-and-em-together.txt"),
),
("๐๏ธ Tabs", include_str!("./basic/tabs.txt")),
("๐งน Tidiness", include_str!("./basic/tidyness.txt")),
]
.into_iter()
.collect();
let extensions_sources: HashMap<&str, &str> = vec![
("๐ Admonition", include_str!("./extensions/admonition.txt")),
(
"โ๏ธ Attribute List",
include_str!("./extensions/attr_list.txt"),
),
("โจ Codehilite", include_str!("./extensions/codehilite.txt")),
(
"๐ GitHub Flavored Markdown",
include_str!("./extensions/github_flavored.txt"),
),
(
"๐ NL2BR with Attribute List",
include_str!("./extensions/nl2br_w_attr_list.txt"),
),
("๐ Sane Lists", include_str!("./extensions/sane_lists.txt")),
(
"๐๏ธ Table of Contents (TOC)",
include_str!("./extensions/toc.txt"),
),
(
"๐จ TOC Invalid",
include_str!("./extensions/toc_invalid.txt"),
),
(
"๐ TOC Nested List",
include_str!("./extensions/toc_nested_list.txt"),
),
("๐ TOC Nested", include_str!("./extensions/toc_nested.txt")),
]
.into_iter()
.collect();
let misc_sources: HashMap<&str, &str> = vec![
(
"โ๏ธ CRLF Line Ends",
include_str!("./misc/CRLF_line_ends.txt"),
),
(
"๐ Adjacent Headers",
include_str!("./misc/adjacent-headers.txt"),
),
("๐ Arabic", include_str!("./misc/arabic.txt")),
(
"๐ Autolinks with Asterisks",
include_str!("./misc/autolinks_with_asterisks.txt"),
),
(
"๐ท๐บ Autolinks with Asterisks (Russian)",
include_str!("./misc/autolinks_with_asterisks_russian.txt"),
),
(
"๐ท๏ธ Backtick Escape",
include_str!("./misc/backtick-escape.txt"),
),
("๐ Bidi", include_str!("./misc/bidi.txt")),
(
"๐ Blank Block Quote",
include_str!("./misc/blank-block-quote.txt"),
),
(
"๐ฒ Blank Lines in Codeblocks",
include_str!("./misc/blank_lines_in_codeblocks.txt"),
),
(
"๐๏ธ Blockquote Below Paragraph",
include_str!("./misc/blockquote-below-paragraph.txt"),
),
(
"โค Blockquote Horizontal Rule",
include_str!("./misc/blockquote-hr.txt"),
),
("๐จ๏ธ Blockquote", include_str!("./misc/blockquote.txt")),
("๐ Bold Links", include_str!("./misc/bold_links.txt")),
("โ Line Break", include_str!("./misc/br.txt")),
(
"๐ Bracket Regular Expression",
include_str!("./misc/bracket_re.txt"),
),
(
"๐ผ๏ธ Brackets in Image Title",
include_str!("./misc/brackets-in-img-title.txt"),
),
(
"๐๏ธ Code First Line",
include_str!("./misc/code-first-line.txt"),
),
(
"๐ Emphasis Around Links",
include_str!("./misc/em-around-links.txt"),
),
(
"๐ช Emphasis and Strong",
include_str!("./misc/em_strong.txt"),
),
(
"๐ก Complex Emphasis and Strong",
include_str!("./misc/em_strong_complex.txt"),
),
("๐ง Email", include_str!("./misc/email.txt")),
("๐ Escaped Links", include_str!("./misc/escaped_links.txt")),
("๐ Funky List", include_str!("./misc/funky-list.txt")),
("#๏ธโฃ H1", include_str!("./misc/h1.txt")),
("#๏ธโฃ Hash", include_str!("./misc/hash.txt")),
(
"๐๏ธ Header in Lists",
include_str!("./misc/header-in-lists.txt"),
),
("#๏ธโฃ Headers", include_str!("./misc/headers.txt")),
("โค Horizontal Line", include_str!("./misc/hline.txt")),
("๐ผ๏ธ Image 2", include_str!("./misc/image-2.txt")),
(
"๐ Image in Links",
include_str!("./misc/image_in_links.txt"),
),
(
"โ๏ธ Insert at Start of Paragraph",
include_str!("./misc/ins-at-start-of-paragraph.txt"),
),
("๐ Inside HTML", include_str!("./misc/inside_html.txt")),
("๐ฏ๐ต Japanese", include_str!("./misc/japanese.txt")),
(
"๐จ๏ธ Lazy Blockquote",
include_str!("./misc/lazy-block-quote.txt"),
),
(
"๐ Link with Parenthesis",
include_str!("./misc/link-with-parenthesis.txt"),
),
("๐๏ธ Lists", include_str!("./misc/lists.txt")),
("๐๏ธ Lists 2", include_str!("./misc/lists2.txt")),
("๐๏ธ Lists 3", include_str!("./misc/lists3.txt")),
("๐๏ธ Lists 4", include_str!("./misc/lists4.txt")),
("๐๏ธ Lists 5", include_str!("./misc/lists5.txt")),
("๐๏ธ Lists 6", include_str!("./misc/lists6.txt")),
("๐๏ธ Lists 7", include_str!("./misc/lists7.txt")),
("๐๏ธ Lists 8", include_str!("./misc/lists8.txt")),
(
"๐ Missing Link Definition",
include_str!("./misc/missing-link-def.txt"),
),
(
"๐จ๏ธ Multi-paragraph Blockquote",
include_str!("./misc/multi-paragraph-block-quote.txt"),
),
("๐งช Multi Test", include_str!("./misc/multi-test.txt")),
("๐๏ธ Nested Lists", include_str!("./misc/nested-lists.txt")),
(
"๐ Nested Patterns",
include_str!("./misc/nested-patterns.txt"),
),
("๐ ๏ธ Normalize", include_str!("./misc/normalize.txt")),
(
"#๏ธโฃ Numeric Entity",
include_str!("./misc/numeric-entity.txt"),
),
(
"๐๏ธ Paragraph with Horizontal Rule",
include_str!("./misc/para-with-hr.txt"),
),
("๐ท๐บ Russian", include_str!("./misc/russian.txt")),
("๐ก Smart Emphasis", include_str!("./misc/smart_em.txt")),
("๐งช Some Test", include_str!("./misc/some-test.txt")),
("๐๏ธ Span", include_str!("./misc/span.txt")),
(
"๐ช Strong with Underscores",
include_str!("./misc/strong-with-underscores.txt"),
),
("๐ช Strong in Tags", include_str!("./misc/stronintags.txt")),
("๐ข Tabs in Lists", include_str!("./misc/tabs-in-lists.txt")),
("โฉ Two Spaces", include_str!("./misc/two-spaces.txt")),
("๐ก Uche", include_str!("./misc/uche.txt")),
("๐ Underscores", include_str!("./misc/underscores.txt")),
("๐ URL with Spaces", include_str!("./misc/url_spaces.txt")),
]
.into_iter()
.collect();
println!("\n๐ Processing Markdown from the `./basic` folder");
process_sources("๐ Basic Features", basic_sources)?;
println!("\n๐ Processing Markdown from the `./extensions` folder");
process_sources("๐งฉ Extended Features", extensions_sources)?;
println!("\n๐ Processing Markdown from the `./misc` folder");
process_sources("๐ Miscellaneous Features", misc_sources)?;
println!("\n๐ Batch processing example completed successfully!");
Ok(())
}
fn process_sources(
group_name: &str,
sources: HashMap<&str, &str>,
) -> Result<(), Box<dyn std::error::Error>> {
println!("\n๐๏ธ Group: {group_name}");
println!(
"----------------------------------------------------------"
);
let config = HtmlConfig::default();
for (title, markdown) in sources {
println!("\n๐ Processing: {title}");
println!("----------------------------------------------------------");
match generate_html(markdown, &config) {
Ok(html) => {
println!(
" โ
Successfully generated HTML:\n{}",
html
);
}
Err(e) => {
println!(" โ Failed to generate HTML: {}", e);
}
}
}
Ok(())
}