document_validator_core 0.1.2

Required dependencies for document_validator and document_validator_macros
Documentation
use syn::Path;

use super::{impl_parse, parse_assign, Merge};

#[derive(Default)]
pub struct DocAttr {
    pub validator: Option<Path>,
    pub crate_path: Option<Path>,
    pub formatter: Option<Path>,
}

impl Merge for DocAttr {
    fn merge(acc: Self, cur: Self) -> Self {
        Self {
            validator: cur.validator.or(acc.validator),
            crate_path: cur.crate_path.or(acc.crate_path),
            formatter: cur.formatter.or(acc.formatter),
        }
    }
}

impl_parse! {
    DocAttr(input, output) {
        "validator" => {
            output.validator = Some(parse_assign::<Path>(input)?);
        },
        "crate" => {
            output.crate_path = Some(parse_assign::<Path>(input)?);
        },
        "formatter" => {
            output.formatter = Some(parse_assign::<Path>(input)?);
        }
    }
}