triblespace-core-macros 0.45.0

Plain wrappers around the triblespace procedural macros
Documentation
use proc_macro::TokenStream;
use proc_macro2::TokenStream as TokenStream2;
use quote::quote;

fn expand(result: syn::Result<TokenStream2>) -> TokenStream {
    match result {
        Ok(stream) => TokenStream::from(stream),
        Err(err) => err.to_compile_error().into(),
    }
}

fn core_base_path() -> TokenStream2 {
    quote!(::triblespace_core)
}

#[proc_macro]
pub fn attributes(input: TokenStream) -> TokenStream {
    let base_path = core_base_path();
    let tokens = TokenStream2::from(input);
    expand(triblespace_macros_common::attributes_impl(
        tokens, &base_path,
    ))
}

#[proc_macro]
pub fn path(input: TokenStream) -> TokenStream {
    let base_path = core_base_path();
    let tokens = TokenStream2::from(input);
    expand(triblespace_macros_common::path_impl(tokens, &base_path))
}

#[proc_macro]
pub fn pattern(input: TokenStream) -> TokenStream {
    let base_path = core_base_path();
    let tokens = TokenStream2::from(input);
    expand(triblespace_macros_common::pattern_impl(tokens, &base_path))
}

#[proc_macro]
pub fn pattern_changes(input: TokenStream) -> TokenStream {
    let base_path = core_base_path();
    let tokens = TokenStream2::from(input);
    expand(triblespace_macros_common::pattern_changes_impl(
        tokens, &base_path,
    ))
}

#[proc_macro]
pub fn entity(input: TokenStream) -> TokenStream {
    let base_path = core_base_path();
    let tokens = TokenStream2::from(input);
    expand(triblespace_macros_common::entity_impl(tokens, &base_path))
}

#[proc_macro]
pub fn __find_impl(input: TokenStream) -> TokenStream {
    expand(triblespace_macros_common::find_impl(
        TokenStream2::from(input),
    ))
}

#[proc_macro_attribute]
pub fn value_formatter(attr: TokenStream, item: TokenStream) -> TokenStream {
    expand(triblespace_macros_common::value_formatter_impl(
        TokenStream2::from(attr),
        TokenStream2::from(item),
    ))
}