Skip to main content

triblespace_core_macros/
lib.rs

1use proc_macro::TokenStream;
2use proc_macro2::TokenStream as TokenStream2;
3use quote::quote;
4
5fn expand(result: syn::Result<TokenStream2>) -> TokenStream {
6    match result {
7        Ok(stream) => TokenStream::from(stream),
8        Err(err) => err.to_compile_error().into(),
9    }
10}
11
12fn core_base_path() -> TokenStream2 {
13    quote!(::triblespace_core)
14}
15
16#[proc_macro]
17pub fn attributes(input: TokenStream) -> TokenStream {
18    let base_path = core_base_path();
19    let tokens = TokenStream2::from(input);
20    expand(triblespace_macros_common::attributes_impl(
21        tokens, &base_path,
22    ))
23}
24
25#[proc_macro]
26pub fn path(input: TokenStream) -> TokenStream {
27    let base_path = core_base_path();
28    let tokens = TokenStream2::from(input);
29    expand(triblespace_macros_common::path_impl(tokens, &base_path))
30}
31
32#[proc_macro]
33pub fn pattern(input: TokenStream) -> TokenStream {
34    let base_path = core_base_path();
35    let tokens = TokenStream2::from(input);
36    expand(triblespace_macros_common::pattern_impl(tokens, &base_path))
37}
38
39#[proc_macro]
40pub fn pattern_changes(input: TokenStream) -> TokenStream {
41    let base_path = core_base_path();
42    let tokens = TokenStream2::from(input);
43    expand(triblespace_macros_common::pattern_changes_impl(
44        tokens, &base_path,
45    ))
46}
47
48#[proc_macro]
49pub fn entity(input: TokenStream) -> TokenStream {
50    let base_path = core_base_path();
51    let tokens = TokenStream2::from(input);
52    expand(triblespace_macros_common::entity_impl(tokens, &base_path))
53}
54
55#[proc_macro]
56pub fn __find_impl(input: TokenStream) -> TokenStream {
57    expand(triblespace_macros_common::find_impl(
58        TokenStream2::from(input),
59    ))
60}
61
62#[proc_macro_attribute]
63pub fn value_formatter(attr: TokenStream, item: TokenStream) -> TokenStream {
64    expand(triblespace_macros_common::value_formatter_impl(
65        TokenStream2::from(attr),
66        TokenStream2::from(item),
67    ))
68}