oca-ast 2.0.0

Library for handling Abstract Syntax Tree of OCA bundle
Documentation
use thiserror::Error;

#[derive(Error, Debug)]

pub enum Error {
    #[error("{0}")]
    InvalidVersion(String),

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

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

    #[error("")]
    MissingVersion(),

    #[error("Validation errors: {0:?}")]
    Validation(Vec<Error>),

    #[error("Overlay definition not found for {0}")]
    MissingOverlayDef(String),

    #[error("Attribute not allowed by overlay definition: {0}")]
    InvalidAttribute(String),

    #[error("Duplicate attribute in CaptureBase: {0}")]
    DuplicateAttribute(String),

    #[error("Missing required attribute {0} in Overlay: {1}")]
    MissingRequiredAttribute(String, String),

    #[error("Invalid Property Value: {0}")]
    InvalidPropertyValue(String),

    #[error("Invalid Property: {0}")]
    InvalidProperty(String),
}

#[allow(dead_code)]
struct Errors(Vec<Error>);

impl std::fmt::Display for Errors {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        self.0
            .iter()
            .try_fold((), |_result, error| writeln!(f, "{}", error))
    }
}