snowcap 0.1.3

A simple markup language for iced
Documentation
use thiserror::Error;

use crate::parser::Rule;

#[derive(Error, Debug)]
pub enum ParseError {
    #[error("unsupported parse rule {0}")]
    UnsupportedRule(String),

    #[error("Unhandled {0}")]
    Unhandled(String),
}

#[derive(Error, Debug)]
pub enum ConversionError {
    #[error("invalid type {0}")]
    InvalidType(String),

    #[error("unsupported attribute {0}")]
    UnsupportedAttribute(String),

    #[error("missing {0}")]
    Missing(String),

    #[error("unknown {0}")]
    Unknown(String),
}

#[derive(Error, Debug)]
pub enum Error {
    #[error(transparent)]
    Parse(#[from] ParseError),
    #[error(transparent)]
    Conversion(#[from] ConversionError),

    #[error("Required attribute {0} missing")]
    MissingAttribute(String),

    #[error(transparent)]
    Pest(#[from] pest::error::Error<Rule>),

    #[error(transparent)]
    Io(#[from] std::io::Error),
}