modi_macros 0.1.1

Code generation for the modi dependency injection framework
Documentation
//! Functions which create common tokenstream outputs

use crate::structures::service::{ Property, PropertyType };
use proc_macro2::TokenStream;

pub fn create_dependency(property: &Property) -> Option<TokenStream> {
    let property_ty = &property.ty;

    match property.property_type {
        PropertyType::Parameter => None,
        PropertyType::Component =>
            Some(quote! {
            ::modi::dyn_mod::HasComponent<#property_ty>
        }),
        PropertyType::Provided =>
            Some(quote! {
            ::modi::dyn_mod::HasProvider<#property_ty>
        }),
    }
}

pub fn create_service_depends(property: &Property) -> Option<TokenStream> {
    match property.property_type {
        PropertyType::Parameter => None,
        PropertyType::Component =>
            Some(quote! {
            ::modi::dyn_mod::Interface::manifest(self)
        }),
        PropertyType::Provided =>
            Some(quote! {
            ::modi::dyn_mod::Interface::manifest(self)
        }),
    }
}