Documentation
use std::io;
use thiserror::Error as ThisError;

/// Error type for Markrust
#[derive(ThisError, Debug)]
pub enum Error {
    /// IO error
    #[error("IO error: {0}")]
    IoError(#[from] io::Error),

    /// Parse error
    #[error("Parse error: {0}")]
    ParseError(String),

    /// Component error
    #[error("Component error: {0}")]
    ComponentError(String),

    /// Render error
    #[error("Render error: {0}")]
    RenderError(String),

    /// Configuration error
    #[error("Configuration error: {0}")]
    ConfigError(String),

    /// YAML parsing error
    #[error("YAML parsing error: {0}")]
    YamlError(#[from] serde_yaml::Error),

    /// TOML parsing error
    #[error("TOML parsing error: {0}")]
    TomlError(#[from] toml::de::Error),

    /// Notify error
    #[error("Watch error: {0}")]
    NotifyError(#[from] notify::Error),

    /// HTML minification error
    #[cfg(feature = "minify")]
    #[error("HTML minification error: {0}")]
    MinifyError(#[from] minify_html::Error),
}