triblespace_core_macros/
lib.rs1use 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}