xavier-derive 0.1.7

Derive module of Xavier. Xavier is a lightweight and versatile XML parsing library designed to streamline the process of handling XML data with ease and efficiency.
Documentation
use syn::DeriveInput;
use proc_macro2::TokenStream;

use crate::deserialize::parser::complex::stream::XmlComplex;
use crate::deserialize::parser::empty::XmlEmptyTag;
use crate::deserialize::parser::enums::XmlEnum;
use crate::deserialize::parser::simple::XmlSimpleTag;

pub struct XmlDeStream;

pub enum DeStreamType {
    Complex, Simple, Empty, Enum
}

impl XmlDeStream {
    pub fn stream(input: &DeriveInput, typed: DeStreamType) -> TokenStream {
        match typed {
            DeStreamType::Complex => XmlComplex::parse(input),
            DeStreamType::Simple => XmlSimpleTag::parse(input),
            DeStreamType::Empty => XmlEmptyTag::parse(input),
            DeStreamType::Enum => XmlEnum::parse(input)
        }
    }
}