#![doc = include_str!("../README.md")]
#![doc(
html_favicon_url = "https://kura.pro/html-generator/images/favicon.ico",
html_logo_url = "https://kura.pro/html-generator/images/logos/html-generator.svg",
html_root_url = "https://docs.rs/html-generator"
)]
#![crate_name = "html_generator"]
#![crate_type = "lib"]
pub mod accessibility;
pub mod error;
pub mod generator;
pub mod performance;
pub mod seo;
pub mod utils;
pub use accessibility::{add_aria_attributes, validate_wcag};
pub use generator::generate_html;
pub use performance::{async_generate_html, minify_html};
pub use seo::{generate_meta_tags, generate_structured_data};
pub use utils::{extract_front_matter, format_header_with_id_class};
use thiserror::Error;
#[derive(Debug, Clone)]
pub struct HtmlConfig {
pub enable_syntax_highlighting: bool,
pub minify_output: bool,
pub add_aria_attributes: bool,
pub generate_structured_data: bool,
}
impl Default for HtmlConfig {
fn default() -> Self {
HtmlConfig {
enable_syntax_highlighting: true,
minify_output: false,
add_aria_attributes: true,
generate_structured_data: false,
}
}
}
#[derive(Debug, Error)]
pub enum HtmlError {
#[error("Markdown conversion error: {0}")]
MarkdownConversionError(String),
#[error("Template rendering error: {0}")]
TemplateRenderingError(String),
#[error("Minification error: {0}")]
MinificationError(String),
#[error("SEO optimization error: {0}")]
SeoError(String),
#[error("Accessibility error: {0}")]
AccessibilityError(String),
}
pub type Result<T> = std::result::Result<T, HtmlError>;