#![allow(missing_docs)]
use html_generator::error::{ErrorKind, HtmlError, SeoErrorKind};
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("\n๐งช html-generator Error Handling Examples\n");
regex_error_example()?;
front_matter_error_example()?;
header_formatting_error_example()?;
io_error_example()?;
selector_parse_error_example()?;
minification_error_example()?;
markdown_conversion_error_example()?;
seo_optimization_error_example()?;
accessibility_error_example()?;
missing_html_element_error_example()?;
invalid_structured_data_example()?;
invalid_input_example()?;
input_too_large_error_example()?;
utf8_conversion_error_example()?;
validation_error_example()?;
unexpected_error_example()?;
println!(
"\n๐ All error handling examples completed successfully!"
);
Ok(())
}
fn regex_error_example() -> Result<(), HtmlError> {
println!("๐ฆ Regex Compilation Error Example");
println!("---------------------------------------------");
let invalid_regex = "(unclosed group";
let result = regex::Regex::new(invalid_regex);
match result {
Ok(_) => {
println!(" โ Unexpected success in compiling regex")
}
Err(e) => {
let error = HtmlError::RegexCompilationError(e);
println!(
" โ
Successfully caught Regex Error: {}",
error
);
}
}
Ok(())
}
fn front_matter_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Front Matter Extraction Error Example");
println!("---------------------------------------------");
let error = HtmlError::FrontMatterExtractionError(
"Failed to extract front matter".to_string(),
);
println!(" โ
Created Front Matter Error: {}", error);
Ok(())
}
fn header_formatting_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Header Formatting Error Example");
println!("---------------------------------------------");
let error = HtmlError::HeaderFormattingError(
"Header is invalid".to_string(),
);
println!(" โ
Created Header Formatting Error: {}", error);
Ok(())
}
fn io_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ IO Error Example");
println!("---------------------------------------------");
let io_error = std::io::Error::new(
std::io::ErrorKind::NotFound,
"File not found",
);
let error = HtmlError::Io(io_error);
println!(" โ
Created IO Error: {}", error);
Ok(())
}
fn selector_parse_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Selector Parse Error Example");
println!("---------------------------------------------");
let selector = "div[invalid]";
let result = scraper::Selector::parse(selector);
match result {
Ok(_) => {
println!(" โ Unexpected success in parsing selector")
}
Err(e) => {
let error = HtmlError::SelectorParseError(
selector.to_string(),
e.to_string(),
);
println!(
" โ
Successfully caught Selector Parse Error: {}",
error
);
}
}
Ok(())
}
fn minification_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Minification Error Example");
println!("---------------------------------------------");
let error = HtmlError::MinificationError(
"Failed to minify HTML".to_string(),
);
println!(" โ
Created Minification Error: {}", error);
Ok(())
}
fn markdown_conversion_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Markdown Conversion Error Example");
println!("---------------------------------------------");
let error = HtmlError::markdown_conversion(
"Failed to convert markdown".to_string(),
None,
);
println!(" โ
Created Markdown Conversion Error: {}", error);
Ok(())
}
fn seo_optimization_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ SEO Optimization Error Example");
println!("---------------------------------------------");
let error = HtmlError::Seo {
message: "SEO issue occurred".to_string(),
element: Some("meta".to_string()),
kind: SeoErrorKind::Other,
};
println!(" โ
Created SEO Optimization Error: {}", error);
Ok(())
}
fn accessibility_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Accessibility Error Example");
println!("---------------------------------------------");
let error = HtmlError::Accessibility {
message: "Failed to add ARIA attributes".to_string(),
kind: ErrorKind::Other,
wcag_guideline: Some("1.1.1".to_string()),
};
println!(" โ
Created Accessibility Error: {}", error);
Ok(())
}
fn missing_html_element_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Missing HTML Element Error Example");
println!("---------------------------------------------");
let error = HtmlError::MissingHtmlElement("title".to_string());
println!(" โ
Created Missing HTML Element Error: {}", error);
Ok(())
}
fn invalid_structured_data_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Invalid Structured Data Error Example");
println!("---------------------------------------------");
let error = HtmlError::InvalidStructuredData(
"Invalid JSON-LD format".to_string(),
);
println!(" โ
Created Invalid Structured Data Error: {}", error);
Ok(())
}
fn invalid_input_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Invalid Input Error Example");
println!("---------------------------------------------");
let error = HtmlError::InvalidInput("Input not valid".to_string());
println!(" โ
Created Invalid Input Error: {}", error);
Ok(())
}
fn input_too_large_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Input Too Large Error Example");
println!("---------------------------------------------");
let error = HtmlError::InputTooLarge(1_024_001);
println!(" โ
Created Input Too Large Error: {}", error);
Ok(())
}
fn utf8_conversion_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ UTF-8 Conversion Error Example");
println!("---------------------------------------------");
let invalid_utf8 = vec![0, 159, 146, 150];
match String::from_utf8(invalid_utf8) {
Ok(_) => {
println!(" โ Unexpected success in UTF-8 conversion")
}
Err(e) => {
let error = HtmlError::Utf8ConversionError(e);
println!(
" โ
Successfully caught UTF-8 Conversion Error: {}",
error
);
}
}
Ok(())
}
fn validation_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Validation Error Example");
println!("---------------------------------------------");
let error = HtmlError::ValidationError(
"Data does not meet schema".to_string(),
);
println!(" โ
Created Validation Error: {}", error);
Ok(())
}
fn unexpected_error_example() -> Result<(), HtmlError> {
println!("\n๐ฆ Unexpected Error Example");
println!("---------------------------------------------");
let error = HtmlError::UnexpectedError(
"An unexpected issue occurred".to_string(),
);
println!(" โ
Created Unexpected Error: {}", error);
Ok(())
}