tighterror-build 0.0.22

The tighterror code generation library.
Documentation
use crate::common::casing;
use convert_case::Case;

#[derive(Clone, Debug, Default, Eq, PartialEq)]
pub struct OverridableErrorSpec {
    pub doc_from_display: Option<bool>,
    pub variant_type: Option<bool>,
}

#[derive(Clone, Debug, Default, Eq, PartialEq)]
pub struct ErrorSpec {
    pub name: String,
    pub display: Option<String>,
    pub doc: Option<String>,
    pub variant_type_name: Option<String>,
    pub oes: OverridableErrorSpec,
}

impl ErrorSpec {
    pub fn variant_type_name(&self) -> String {
        if let Some(ref vtn) = self.variant_type_name {
            vtn.clone()
        } else {
            casing::convert_case(&self.name, Case::UpperSnake, Case::UpperCamel)
        }
    }
}